from bs4 import BeautifulSoup
from markdownify import markdownify as md
import os
def convert_html_table_to_md(html_file_path, output_md_file_path):
# HTML 파일 읽기
with open(html_file_path, 'r', encoding='utf-8') as file:
html_content = file.read()
# BeautifulSoup을 사용하여 HTML 파싱
soup = BeautifulSoup(html_content, 'html.parser')
# HTML을 Markdown으로 변환
markdown_content = md(str(soup))
# 결과를 Markdown 파일로 저장
with open(output_md_file_path, 'w', encoding='utf-8') as file:
file.write(markdown_content)
print(f"Converted HTML table to Markdown and saved as: {output_md_file_path}")
# 사용 예시
#html_file_path = 'path_to_your_html_file.html' # 변환할 HTML 파일 경로
html_file_path = 'test_001.html' # 변환할 HTML 파일 경로
output_md_file_path = 'output_markdown_file.md' # 저장할 Markdown 파일 경로
convert_html_table_to_md(html_file_path, output_md_file_path)
Ibis defines a Python dataframe API that executes on any query engine – the frontend for any backend data platform, with 20+ backends today. This allows Ibis to have excellent performance – as good as the backend it is connected to – with a consistent user experience.
What is Ibis?
Ibis is the portable Python dataframe library.
We can demonstrate this with a simple example on a few local query engines:
import ibis
ibis.options.interactive = True
DuckDB
Polars
DataFusion
PySpark
1con = ibis.connect("duckdb://")
t = con.read_parquet("penguins.parquet")
t.limit(3)
Ibis is for data engineers, data analysts, and data scientists (or any title that needs to work with data!) to use directly with their data platform(s) of choice. It also has benefits fordata platforms,organizations, andlibrary developers.
Ibis for practitioners
You can use Ibis at any stage of your data workflow, no matter your role.
Data engineerscan use Ibis to:
write and maintain complex ETL/ELT jobs
replace fragile SQL string pipelines with a robust Python API
replace PySpark with a more Pythonic API that supports Spark and many other backends
Data analystscan use Ibis to:
use Ibis interactive mode for rapid exploration
perform rapid exploratory data analysis using interactive mode
work in a general-purpose, yet easy to learn, programming language without the need for formatting SQL strings
Data scientistscan use Ibis to:
extract a sample of data for local iteration with a fast local backend
prototype with the same API that will be used in production
preprocess and feature engineer data before training a machine learning model
Ibis for data platforms
Data platforms can use Ibis to quickly bring a fully-featured Python dataframe library with minimal effort to their platform. In addition to a great Python dataframe experience for their users, they also get integrations into thebroader Python and ML ecosystem.
Often, data platforms evolve to support Python in some sequence like:
Develop a fast query engine with a SQL frontend
Gain popularity and need to support Python for data science and ML use cases
Develop a bespoke pandas or PySpark-like dataframe library and ML integrations
This third step is where Ibis comes in. Instead of spending a lot of time and money developing a bespoke Python dataframe library, you can create an Ibis backend for your data platformin as little as four hours for an experienced Ibis developeror, more typically, on the order ofoneortwomonths for a new contributor.
Why not the pandas or PySpark APIs?
Ibis for organizations
Organizations can use Ibis to standardize the interface for SQL and Python data practitioners. It also allows organizations to:
transfer data between systems
transform, analyze, and prepare data where it lives
benchmark your workload(s) across data systems using the same code
mix SQL and Python code seamlessly, with all the benefits of a general-purpose programming language, type checking, and expression validation
Ibis for library developers
Python developers creating libraries can use Ibis to:
instantly support 20+ data backends
instantly support pandas, PyArrow, and Polars objects
read and write from all common file formats (depending on the backend)
trace column-level lineage through Ibis expressions
Most Python dataframes are tightly coupled to their execution engine. And many databases only support SQL, with no Python API. Ibis solves this problem by providing a common API for data manipulation in Python, and compiling that API into the backend’s native language. This means you can learn a single API and use it across any supported backend (execution engine).
Ibis broadly supports two types of backend:
SQL-generating backends
DataFrame-generating backends
As you can see, most backends generate SQL. Ibis usesSQLGlotto transform Ibis expressions into SQL strings. You can also use the.sql()methods to mix in SQL strings, compiling them to Ibis expressions.
While portability with Ibis isn’t perfect, commonalities across backends and SQL dialects combined with years of engineering effort produce a full-featured and robust framework for data manipulation in Python.
In the long-term, we aim for a standard query plan Intermediate Representation (IR) likeSubstraitto simplify this further.
Python + SQL: better together
For most backends, Ibis works by compiling Python expressions into SQL:
g = t.group_by(["species", "island"]).agg(count=t.count()).order_by("count")
ibis.to_sql(g)
SELECT
*
FROM (
SELECT
`t0`.`species`,
`t0`.`island`,
COUNT(*) AS `count`
FROM `ibis_read_parquet_pp72u4gfkjcdpeqcawnpbt6sqq` AS `t0`
GROUP BY
1,
2
) AS `t1`
ORDER BY
`t1`.`count` ASC NULLS LAST
You can mix and match Python and SQL code:
sql = """
SELECT
species,
island,
COUNT(*) AS count
FROM penguins
GROUP BY species, island
""".strip()
DuckDB
DataFusion
PySpark
con = ibis.connect("duckdb://")
t = con.read_parquet("penguins.parquet")
g = t.alias("penguins").sql(sql)
g
This allows you to combine the flexibility of Python with the scale and performance of modern SQL.
Scaling up and out
Out of the box, Ibis offers a great local experience for working with many file formats. You can scale up with DuckDB (the default backend) or choose from other great options like Polars and DataFusion to work locally with large datasets. Once you hit scaling issues on a local machine, you can continue scaling up with a larger machine in the cloud using the same backend and same code.
If you hit scaling issues on a large single-node machine, you can switch to a distributed backend like PySpark, BigQuery, or Trino by simply changing your connection string.
Stream-batch unification
As ofIbis 8.0, the first stream processing backends have been added. Since these systems tend to support SQL, we can with minimal changes to Ibis support both batch and streaming workloads with a single API. We aim to further unify the batch and streaming paradigms going forward.
Ecosystem
Ibis is part of a larger ecosystem of Python data tools. It is designed to work well with other tools in this ecosystem, and we continue to make it easier to use Ibis with other tools over time.
Ibis already works with other Python dataframes like:
Note that theibis-frameworkpackage isnotthe same as theibispackage in PyPI. These two libraries cannot coexist in the same Python environment, as they are both imported with theibismodule name.
See thebackend support matrixfor details on operations supported.Open a feature requestif you’d like to see support for an operation in a given backend. If the backend supports it, we’ll do our best to add it quickly!
Community
Community discussions primarily take place onGitHubandZulip.
오픈AI는 챗GPT(ChatGPT)의 주간 활성 사용자가 2억 명을 돌파했다고 밝혔다. 이는 지난해보다 두 배 증가한 수준이다.
39일 악시오스에 따르면, 포춘 500대 기업 중 92%가 오픈AI 제품을 사용하고 있다. 또 GPT-4o 미니(mini)가 올 7월에 출시된 이후 자동화 API 사용량이 두 배 증가했다.
샘 올트먼 오픈AI 최고경영책임자(CEO)는 “사람들이 우리의 도구를 이제 일상적으로 사용하고 있으며, 이는 의료 및 교육과 같은 분야에서 실질적인 변화를 가져오고 있다”며 “일상적인 업무 지원부터 어려운 문제 해결, 창의성 발현까지 다양한 영역에서 도움을 주고 있다”고 말했다.
오픈AI는 생성형 AI 챗봇 시장에서 선두 자리를 유지하고 있다. 하지만 테크 기업들이 점유율을 높이고자, 서비스를 업데이트하면서 경쟁 격화에 노출된 상태다.
이날 메타(Meta)는 오픈 소스 라마(Llama) 모델의 도입이 급격히 증가했다고 밝혔다. 라마(Llama) 3.1 출시 이후 올해 5월과 7월 사이 주요 클라우드 서비스 제공업체에서의 사용량이 두 배 증가했다는 것이 회사측 설명이다.
Classic ASP에서 브라우저에 접속한 사용자의 고유한 키 값을 생성하기 위해 주로 사용하는 방법은 **GUID(Globally Unique Identifier)**를 생성하는 것입니다. GUID는 전 세계에서 유일한 값을 가지도록 설계된 128비트 값으로, 사용자의 고유 세션이나 식별자를 만들 때 유용합니다.
Classic ASP에서 GUID 생성 방법
ASP에서 GUID를 생성하는 가장 쉬운 방법은 Scriptlet.TypeLib을 사용하여 GUID를 만드는 것입니다. 다음은 Classic ASP에서 GUID를 생성하여 고유 키를 얻는 코드입니다.
<%
Function GenerateGUID()
Dim objTypeLib
Set objTypeLib = CreateObject("Scriptlet.TypeLib")
GenerateGUID = objTypeLib.Guid
Set objTypeLib = Nothing
End Function
' 생성된 GUID 호출 예제
Dim uniqueKey
uniqueKey = GenerateGUID()
' 브라우저에 출력
Response.Write "Generated Unique Key: " & uniqueKey
%>
설명
CreateObject("Scriptlet.TypeLib"): Scriptlet.TypeLib 객체는 GUID를 생성할 수 있는 COM(Component Object Model) 객체입니다.
GenerateGUID = objTypeLib.Guid: .Guid 속성을 호출하면 GUID 값을 반환합니다. 이 값은 일반적으로 { }로 감싸진 문자열로 출력됩니다.
고유한 키 사용: 생성된 uniqueKey를 쿠키, 세션 변수 등에 저장하여 사용자 식별 등에 사용할 수 있습니다.
고유 키 생성 방법의 활용
세션 관리: 로그인 세션 관리에 활용할 수 있습니다.
추적 및 분석: 방문자를 추적하거나 분석할 때 유용합니다.
데이터베이스 키: 사용자별 고유한 데이터베이스 키로 사용할 수 있습니다.
이 방법을 사용하면 Classic ASP에서 손쉽게 고유한 키 값을 생성하여 사용할 수 있습니다.
월가는 특정 종류의 승자를 선호한다. 이는 단기 수익과 영업 이익이 추정치를 뛰어넘는, 최상의 분기별 재무 보고서를 발표할 수 있는 승자를 의미한다.
월가는 장기적인 관점, 특히 초장기적인 관점에는 거의 신경 쓰지 않는 듯하다. 기업 경영진이 몇 년 후 급성장할 기술을 지배하기 위해 신중하게 장기 계획을 세울 때보다 분기별 실적이 급상승할 때 주가가 급등할 가능성은 훨씬 더 높다.
이것이 7월 말 마이크로소프트의 실적 발표에 대한 주식 시장의 반응이 주는 교훈이다. 투자자들에게 중요한 소식은 무엇이었을까? 마이크로소프트의 클라우드 기반 애저(Azure) 비즈니스가 해당 분기에 “단지” 30% 성장해 회사가 예상했던 31%보다 1% 낮았다는 점이다.
다음 날 트레이더들은 마이크로소프트를 ‘처벌’했다. 전체 시장이 상승세(예를 들어 S&P 지수는 86% 증가)인 와중에 회사의 주가는 4% 이상 하락했다. 이는 마이크로소프트가분기 매출 15%, 순이익 10%가 증가했다고 발표한 뒤에 일어난 일이다.
마이크로소프트의 AI 장기 투자에 무심한 월가 실적 발표에서 나온 훨씬 더 중요한 소식은 마이크로소프트가 AI에 올인하고 있으며 수년간 수익을 내지 못할 수도 있는 장기 인프라에 막대한 비용을 지출하고 있다는 점이었다. 하지만 주가를 기준으로 볼 때 이 소식이 월가에서는 중요하지 않은 것처럼 보였다.
마이크로소프트 CFO인 에이미 후드는 애널리스트들과의 통화에서 190억 달러의 자본 지출이 거의 모두 AI 및 클라우드와 관련이 있다고 말했다. 지출의 절반은 인프라 관련 비용, 특히 AI용 대규모 컴퓨팅 성능에 필요한 데이터센터를 구축하는 데 사용됐다. 이는 AI 붐이 본격화되기 전인 2년 전보다 2배 이상 증가한 수치다.
이에 대해뉴욕타임스는 “수익 보고서는 마이크로소프트가 데이터센터를 구축하고 AI 기술을 구동하는 고가의 칩을 구입하는 데 막대한 비용을 지출하고 있음을 보여준다. 회사의 자본 지출은 나델라가 최고 경영진에게 AI 투자를독려한 2022년 말부터 매 분기 증가했다”라고 설명했다.
이 정도의 지출 규모는 마이크로소프트가 AI 시장을 계속 장악하고 향후 수십억 달러의 수익을 거두기 위해 반드시 필요할 터지만 월가를 성가시게 했다. 특히 후드가 대규모 지출이 “향후 15년과 그 이후에도 수익 창출을 지원할 것”이라고 설명했을 때 투자자들을 겁을 먹었을 가능성이 높다.
월가에서 15년은 15억 년처럼 느껴질 수 있으며, 이들은 향후 10년 후의 ‘먼 미래’가 아니라 지금 당장, 그리고 단기적인 성과를 원한다.
마이크로소프트의 대대적인 AI 베팅은 옳은 선택일까? 금융 시장이 수년간 수익을 내지 못할 기술에 거액을 투자하는 기업을 경계하는 데에는 그만한 이유가 있다. 기술은 빠르게 변하고, 기업이 ‘넥스트 빅 씽’을 추구하는 과정에는 변덕이 있을 수 있다. 오늘 확실한 기회처럼 보이는 것이 내일은 실패로 바뀔 수 있다. 가상 현실에 대한 과대 광고만 봐도 알 수 있다. 가상 현실에 대한 성과는 그 어느 때보다 찾기 어렵고 어쩌면 영원히 오지 않을 가능성도 있다.
하지만 AI에서는 그런 일이 일어나진 않을 것이다. 베팅이 클수록 더 큰 보상을 얻을 가능성이 높다. 가상 현실은 실제로 큰 수익을 창출한 적이 없지만, AI는 이미 그랬다. 게다가 아직 초기 단계다.
실제로 지난 분기에 마이크로소프트의 수익은 AI 서비스에 대한 수요를 따라잡지 못해 타격을 입었다. CEO 사티아 나델라와 후드는 실적 발표에서 데이터센터에 공급 역량이 충분했다면 해당 분기에 더 많은 AI 서비스를 판매할 수 있었을 것이라고 말했다.
마이크로소프트의 투자자 관계 책임자인 브렛 아이버슨은 뉴욕타임스에 “용량이 확보되는 즉시 판매되고 있다”라고 밝혔다.