ToCode
Open in Telegram
1 419
Subscribers
No data24 hours
No data7 days
-230 days
Posts Archive
1 419
转拽爪讬专 讚讜讙诪讗讜转 讛讜讜讘讬谞专 诪讞专
讛讬 讞讘专讬诐 诪讛 拽讜专讛? 讛砖讘讜注 讘诪驻讙砖 砖诇 诪讚讘专讬诐 AI 讗谞讬 讗爪讬讙 讗转 讛住驻专讬讛 OpenAI Agents 讜讗专讗讛 讗讬讱 诇讛转拽讬谉 讗讜转讛, 诪讛 讛拽砖专 砖诇讛 诇住驻专讬讜转 住讜讻谞讬诐 诪转讞专讜转 讗讜 诪拽讘讬诇讜转 讜诪讛 讛诪谞讙谞讜谞讬诐 讜讛注拽专讜谞讜转 讛诪专讻讝讬讬诐 砖诇 讻转讬讘转 住讜讻谞讬诐. 讗诇讛 5 讚讜讙诪讗讜转 砖讗谞讬 诪转讻谞谉 诇讛爪讬讙.
讛住讜讻谉 讛专讗砖讜谉 砖诇讬
住讜讻谉 讛讜讗 讘住讱 讛讻诇 转讜讻谞讬转 专讙讬诇讛 砖讞诇拽 诪讛注讘讜讚讛 砖诇讛 谞注砖讛 讘讗诪爪注讜转 诪讜讚诇 砖驻讛 讙讚讜诇. 讚讜讙诪讛 专讗砖讜谞讛 注诐 OpenAI Agents 讛讬讗 讛转讜讻谞讬转:
from agents import Agent, Runner
agent = Agent(name="Assistant", instructions="You are a helpful assistant")
result = Runner.run_sync(agent, "Write a haiku about recursion in programming.")
print(result.final_output)
讘砖讘讬诇 诇讛专讬抓 讗转 讛转讜讻谞讬转 讬砖 诇讛转拽讬谉 讗转 讛住驻专讬讛 注诐:
pip install openai-agents
讜诇讛讙讚讬专 诪砖转谞讛 住讘讬讘讛 讘砖诐 OPENAI_API_KEY 砖诪讞讝讬拽 讗转 诪驻转讞 讛 API 砖诇讻诐 诪 openai.
讛转讜讻谞讬转 讘讚讜讙诪讛 诪砖转诪砖转 讘诪讜讚诇 砖驻讛 讚专讱 API 讻讚讬 诇讻转讜讘 砖讬专 讛讬讬拽讜. 讻诇 驻注诐 砖诪驻注讬诇讬诐 讗讜转讛 诪拽讘诇讬诐 砖讬专 拽爪转 讗讞专 注诇 讗讜转讜 谞讜砖讗.
讙讬讜讜谉 住讜讻谞讬诐 注诐 讘讚讬讞讜转 讗讘讗
讚讜讙诪讛 砖谞讬讛 讛讬讗 讘讞讬专转 讛诪讜讚诇. 讻诇 诪讜讚诇 谞讜转谉 转砖讜讘讜转 讗讞专讜转 讜讛专讘讛 驻注诪讬诐 诪讜讚诇讬诐 诪住讜讬诪讬诐 讬讜转专 诪转讗讬诪讬诐 诇注谞讜转 注诇 砖讗诇讜转 诪住讜讬诪讜转 诪讗讞专讬诐. 讗讬谉 "诪讜讚诇 讛讻讬 讟讜讘" 讬砖 诪讜讚诇 砖诪转讗讬诐 讘爪讜专讛 讛讻讬 讟讜讘讛 诇驻专讜诪驻讟 砖讻转讘转讬 讜诇诪砖讬诪讛 砖讗谞讬 爪专讬讱 诇讘爪注.
注诐 openai agents 讬砖 诇讬 砖转讬 讗驻砖专讜讬讜转 诇讘讞讜专 诪讜讚诇. 讗讜驻爪讬讛 专讗砖讜谞讛 讗诐 讗谞讬 专讜爪讛 诇讛讬砖讗专 讘注讜诇诐 砖诇 OpenAI 讗驻砖专 诇讛注讘讬专 讗转 讛诪驻转讞 model 诇讘谞讗讬 砖诇 Agents 诇讚讜讙诪讛:
agent = Agent(
name="Assistant",
instructions="You are a mighty creator of dad jokes",
model="gpt-5-mini",
)
讗讜驻爪讬讛 砖谞讬讛 讗诐 讗谞讬 专讜爪讛 诪讜讚诇 诪住驻拽 讗讞专, 诇诪砖诇 讘砖讘讬诇 诇注讘讜讚 注诐 讙'诪讬谞讬, 讗谞讬 爪专讬讱 诇讛转拽讬谉 讙讬专住讛 砖诇 住驻专讬讬转 讛住讜讻谞讬诐 注诐 转讜住祝 讘砖诐 LiteLLM 注诐 讛驻拽讜讚讛:
pip install "openai-agents[litellm]"
讜讗讝 讗谞讬 讬讻讜诇 讘拽讜讚 诇讻转讜讘:
gemini = Agent(
name="Assistant",
instructions="You are a mighty creator of dad jokes",
model=LitellmModel(model="gemini/gemini-2.5-flash", api_key="...")
)
result = Runner.run_sync(gemini, "Write a random dad joke")
print(result.final_output)
讘讚讬拽转 住讜讻谞讬诐 讚专讱 讛 REPL
住驻专讬讬转 OpenAI Agents 诪讙讬注讛 注诐 讻诇讬 砖讜专转 驻拽讜讚讛 诇讘讚讬拽转 住讜讻谞讬诐. 讛讻诇讬 诪讗驻砖专 诇讬 诇讻转讜讘 砖讜专转 Instructions 讜讗讝 诇讛诪砖讬讱 讜诇讚讘专 注诐 讛住讜讻谉 砖诪讜讙讚专 注诇 讬讚讬 讛诪讜讚诇 讜讛 Instructions. 转讜讻谞讬转 讻讝讜 诪驻注讬诇讛 诇讜诇讗讛 砖诪讞讻讛 诇砖讜专讛 诪讛诪砖转诪砖, 砖讜诇讞转 讗转 讛讛讜讚注讛 诇诪讜讚诇 讛砖驻讛, 砖讜诪专转 讗转 讛讛讜讚注讛 讜讗转 转砖讜讘转 讛诪讜讚诇 讜诪讚驻讬住讛 讗讜转讛 讞讝专讛 诇诪砖转诪砖 讘讛讝专诪讛.
讝讛 讛拽讜讚 讜讝讛 诪讗讜讚 谞讜讞 讻讚讬 诇讘讚讜拽 讗讬讱 住讜讻谞讬诐 砖讜谞讬诐 砖讗谞讞谞讜 讘讜谞讬诐 讬转谞讛讙讜:
import asyncio
from agents import Agent, run_demo_loop
async def main() -> None:
agent = Agent(
name="Assistant",
instructions="You are a mighty creator of dad jokes",
model="gpt-4.1-mini",
)
await run_demo_loop(agent)
if __name__ == "__main__":
asyncio.run(main())
谞讬讛讜诇 Session 讘注爪诪谞讜
诪讛 讘注爪诐 注讜砖讛 讛驻讜谞拽爪讬讛 run_demo_loop? 讛讬讗 驻讜转讞转 讗讜讘讬拽讟 砖谞拽专讗 session. 诪讜讚诇 讛砖驻讛 诇讗 "讝讜讻专" 讛讜讚注讜转 讬砖谞讜转, 讗讬谉 诇讜 State, 诇讻谉 讘砖讘讬诇 诇讬讬爪专 砖讬讞讛 讻诇 讛讜讚注讛 谞砖诇讞转 注诐 讻诇 讛讛讜讚注讜转 讛拽讜讚诪讜转 讘讗讜转讛 讛砖讬讞讛. 讗讜讘讬拽讟 session 砖讜诪专 专砖讬诪讜转 砖诇 讛讜讚注讜转 讻讚讬 砖讬讛讬讛 讗驻砖专 诇讛诪砖讬讱 砖讬讞讜转.
讛 session 讬讻讜诇讛 诇讛讬砖诪专 讘讝讬讻专讜谉 讗讘诇 讬讛讬讛 诇谞讜 谞讜讞 诇砖诪讜专 讗讜转讛 讘讘住讬住 谞转讜谞讬诐. 讛拽讜讚 讛讝讛 诪专讬抓 诇讜诇讗讛 砖诇 砖讬讞讛 注诐 诪讜讚诇 讜砖讜诪专 讗转 讻诇 讛讛讜讚注讜转 诇讘住讬住 谞转讜谞讬诐 诪住讜讙 SQLite. 讗讞专讬 讛专爪讛 讛住转讻诇讜 讘讘住讬住 讛谞转讜谞讬诐 讻讚讬 诇专讗讜转 讗转 诪讘谞讛 讛讟讘诇讗讜转 讜讛讛讜讚注讜转:
import asyncio
from agents import Agent, SQLiteSession, Runner
async def main() -> None:
agent = Agent(
name="Assistant",
instructions="You are a mighty creator of dad jokes",
model="gpt-4.1-mini",
)
session = SQLiteSession("user_123", "conversations.db")
while True:
next_line = input('> ')
result = await Runner.run(
agent,
next_line,
session=session
)
print(result.final_output)
if __name__ == "__main__":
asyncio.run(main())
讛驻注诇转 讻诇讬诐1 419
专拽 AI 讛讬讛 讬讻讜诇 诇讞砖讜讘 注诇 讝讛, 讞诇拽 2
诪讗讞专 讜诇 AI 讗讬谉 讘注讬讛 诇讛拽诇讬讚 讛专讘讛 讗谞讞谞讜 讛专讘讛 驻注诪讬诐 诪拽讘诇讬诐 PR-讬诐 注诐 讛诪讜谉 拽讜讚 砖讘诪讘讟 专讗砖讜谉 诇讗 谞专讗讛 谞讜专讗 讜讗讜诇讬 讗驻讬诇讜 谞讜转谉 讛专讙砖讛 砖诇 "讜讜讗讜 讗讬讝讛 讻讬祝 砖讬砖 AI 讻讬 诇讬 讛讬讛 诇讜拽讞 讛诪讜谉 讝诪谉 诇讛拽诇讬讚 讗转 讻诇 讝讛" 讗讘诇 讘诪讘讟 讬讜转专 诪注诪讬拽 讗谞讞谞讜 诪讘讬谞讬诐 砖讘谞讬 讗讚诐 诪专讗砖 诇讗 讛讬讜 诪拽诇讬讚讬诐 讗转 讛讻诇. 讚讜讙诪讛? 讘讟讞.
讻转讘转讬 拽讜讚 砖讬讜爪专 诪讘谞讛 谞转讜谞讬诐 砖诇 专砖讬诪讛 讘讛 诇讻诇 驻专讬讟 讬砖 诪讝讛讛 讜讙诐 讻诇 驻专讬讟 爪专讬讱 诇讛讞讝讬拽 讗转 讛诪讝讛讬诐 砖诇 讛驻专讬讟讬诐 砖讛讬讜 诇驻谞讬讜 讜讗讞专讬讜, 讻讻讛 讘注专讱 讝讛 谞专讗讛:
items = [
{ id: 'a', name: 'one', next: 'b' },
{ id: 'b', name: 'two', prev: 'a', next: 'c' },
{ id: 'c', name: 'three', prev: 'b', next: 'd' },
{ id: 'd', name: 'four', prev: 'c' }
]
讜讘讬拽砖转讬 诪 AI 诇讻转讜讘 讘讚讬拽讜转 诇诇讜讙讬拽讛.
拽讬讘诇转讬 拽讜讘抓 砖诇 讻诪讛 诪讗讜转 砖讜专讜转 讻诇 讘讚讬拽讛 讘谞讜讬讛 讘讗讜转讜 住讙谞讜谉:
expected = [{id: 'a', name: 'one'}]
assert_equal expected, build_list
专讜讗讬诐 讻讘专 讗转 讛讘注讬讛? 转讻祝 讛讬讗 转讛讬讛 讘专讜专讛.
讛驻讬爪'专 讛讘讗 诇诪讬诪讜砖 讛讬讛 砖讬谞讜讬 砖讛诪讝讛讬诐 讬讛讬讜 讗拽专讗讬讬诐, 讻讱 砖注讻砖讬讜 讛驻讜谞拽爪讬讛 build_list 注讚讬讬谉 诪讞讝讬专讛 诪讘谞讛 谞转讜谞讬诐 讘讚讬讜拽 讘讗讜转讜 诪讘谞讛 讗讘诇 讘诪拽讜诐 a, b, c 讜 d 讛讬讗 诪砖转诪砖转 讘 uuid. 诪讘讞讬谞转 讛拽讜讚 讝讛 讛讬讛 砖讬谞讜讬 砖诇 讚拽讛 讗讘诇 讛讘讚讬拽讛 (讻诇讜诪专 讻诪讛 诪讗讜转 砖讜专讜转 砖诇 讘讚讬拽讜转) 诇讗 砖专讚讛.
讘谉 讗讚诐 砖讛讬讛 诪拽讘诇 诪砖讬诪讛 诇讻转讜讘 讘讚讬拽讜转 讛讬讛 拽讜讚诐 讻诇 讞讜砖讘 "诪讛 讘注爪诐 讞砖讜讘 诇讬 讘讘讚讬拽讛 讛讝讗转", 诪讘讬谉 砖诪讛 砖讞砖讜讘 讝讛 砖讛 next 讜 prev 转诪讬讚 诪讻讬诇讬诐 讗转 讛诪讝讛讬诐 砖诇 诪讛 砖讘讗 诇驻谞讬讛诐 讜讗讞专讬讛诐 讜讻讜转讘 讘讚讬拽讛 讙诪讬砖讛 砖诇讜拽讞转 讗转 讛诪讝讛讬诐 诪讛专砖讬诪讛 砖谞讜爪专讛 讜诪讜讜讚讗转 砖讛拽砖专 讘讬谉 讛驻专讬讟讬诐 谞讻讜谉. 诇 AI 讗讬谉 讜诇讗 讬讻讜诇讛 诇讛讬讜转 讛讛讘谞讛 讛讝讗转.
讗讙讘 讻砖砖讗诇转讬 讗转 讛 AI 诪讛 讗驻砖专 诇注砖讜转 讘砖讘讬诇 砖讛讘讚讬拽讜转 诇讗 讬讬讻砖诇讜 讛讜讗 讛爪讬注 讘讚讬讜拽 诪讛 砖讘讬谞讛 诪诇讗讻讜转讬转 讗诪讜专讛 诇讛爪讬注 - 转注砖讛 mock 诇驻讜谞拽爪讬讬转 讛 random 讜讻讻讛 讬讛讬讜 诇讱 诪讝讛讬诐 爪驻讜讬讬诐 讜转讜讻诇 诇讛砖转诪砖 讘讛诐 讘讘讚讬拽讜转. 讜讝讛 讘讚讬讜拽 讛驻讬转专讜谉 砖诪驻住驻住 讗转 讛讘注讬讛.
谞砖讬诐 诇讘 - 讘拽讬讚讜讚 注诐 AI 讬砖 诇谞讜 讛讝讚诪谞讜转 诇讛拽诇讬讚 驻讞讜转 讜诪讞讜讬讘讜转 诇讞砖讜讘 讬讜转专. 讝讛 砖谞讬 讚讘专讬诐 讟讜讘讬诐 讘诪讻讛 讗讞转.1 419
专拽 AI 讛讬讛 讬讻讜诇 诇讞砖讜讘 注诇 讝讛
讛住讬讘讛 砖讘讗讙讬诐 砖诇 AI 讻诇 讻讱 拽砖讬诐 诇讝讬讛讜讬 讛讬讗 讻讬 讬砖 诇讜 砖讬讟转 讞砖讬讘讛 拽爪转 砖讜谞讛 诪砖诇谞讜. 讛谞讛 谞讬住讬讜谉 砖诇 AI 诇讛讜住讬祝 id 住讬讚讜专讬 诇讻诇 驻专讬讟 砖讗讬谉 诇讜 id 讘专砖讬诪讛:
item
.select { |item| !item["id"] }
.each_with_index do |item, index|
item["id"] = "item_#{index + 1}"
end
专讜讗讬诐 讗转 讛讻砖诇? 讘讙诇诇 砖讛诇讜诇讗讛 专爪讛 专拽 注诇 讛驻专讬讟讬诐 砖讗讬谉 诇讛诐 id, 讛讗讬谞讚拽住 诇讗 转讜讗诐 诇诪住驻专 讛驻专讬讟讬诐. 讻砖讗谞讬 诪讜住讬祝 驻专讬讟 讞讚砖 讜讬砖 讘专砖讬诪讛 5 驻专讬讟讬诐 讛讜讗 讬拽讘诇 讗转 讛诪讝讛讛 item_0 讻讬 讬砖 专拽 驻专讬讟 讗讞讚 诇诇讗 id. 讜讻讱 讙诐 讘驻专讬讟 讛讘讗 讜讝讛 砖讗讞专讬讜.
诪讛 砖诪注谞讬讬谉 砖诇拽诇讜讚 讗讬谉 讘注讬讛 诇讝讛讜转 讗转 讛讻砖诇 讛诇讜讙讬 砖讛讜讗 讬爪专. 诪住驻讬拽 诇讘拽砖 诪诪谞讜 诇注砖讜转 Code Review 诇拽讟注 讛拽讜讚 讘砖讘讬诇 诇拽讘诇 诪讬讚 讛住讘专 诪诇讗 诇讘注讬讛 讛诇讜讙讬转. 讗讘诇 讝讛 诇讗 注讜讝专 讻讬 Code Review 砖诇 AI 诇讗 注讜讘讚 讘住拽讬讬诇 讙讚讜诇.
诪讛 讻谉 注讜讘讚? 讘诪拽讜诐 诇砖讻谞注 讗转 讛 AI 诇讞砖讜讘 谞谞住讛 诇讗专讙谉 讗转 讛拽讜讚 讻讱 砖讗驻砖专 讬讛讬讛 诇驻转讜专 讘注讬讜转 注诐 驻讞讜转 讞砖讬讘讛 讗讜 讘诇讬 讘讻诇诇. 讘讚讜讙诪讛 砖诇谞讜 驻讜谞拽爪讬讛 讘砖诐 generate_new_item_id 讬讻诇讛 诇驻转讜专 讗转 讛讘注讬讛, 讘诪讬讜讞讚 讗诐 诪讬砖讛讜 讛讬讛 诪住驻专 注诇讬讛 讘拽讜讘抓 驻专讜诪驻讟. 讗驻讬诇讜 讬讜转专 讟讜讘 讛讬讛 诇砖诪讜专 讻诇 item 讘讘住讬住 谞转讜谞讬诐 讜诇转转 诇讘住讬住 谞转讜谞讬诐 诇讬讬爪专 讗转 讛诪讝讛讛. 讻讻诇 砖讛诪住讙专转 讟讜讘讛 讬讜转专 讜讛 AI 爪专讬讱 诇讞砖讜讘 驻讞讜转 讻讱 谞讙讚讬诇 讗转 讛住讬讻讜讬 诇拽讘诇 拽讜讚 谞讻讜谉 讜诇讛转拽讚诐 诪讛专.1 419
讛讬讜诐 诇诪讚转讬: 讛诪讞诇拽讛 StringScanner 讘 Ruby
诪讛 拽讜专讛 讻砖讗转诐 爪专讬讻讬诐 诇住专讜拽 诪讞专讜讝转 讻讚讬 诇讞驻砖 转讘谞讬转 砖讞讜讝专转 注诇 注爪诪讛? 讘讚讬讜拽 讘砖讘讬诇 讝讛 谞讜诇讚讛 讛诪讞诇拽讛 StringScanner. 讛讬讗 诪讗驻砖专转 讞讬驻讜砖 讗讬讟专讟讬讘讬 讘诪讞专讜讝转 注诐 拽讜讚 讟讬驻讜诇 诇讻诇 诪讜驻注. 讘讜讗讜 谞专讗讛 讗讬讱 讝讛 注讜讘讚 讚专讱 转专讙讬诇 专讜讘讬.
讛讗转讙专 - 讞讬驻讜砖 诪讬诇讬诐 诪住讜诪谞讜转
谞转讜谉 讟拽住讟:
text = 'I can [see] a [mountain] in the [distance]'
讘讜讗讜 谞诪爪讗 讗转 讛讗讬谞讚拽住 砖诇 讛诪讬诇讬诐 讛诪住讜诪谞讜转, 讻诇讜诪专 谞专爪讛 诇讞讝讬专 讗转 讛诪住驻专讬诐 2, 4 讜 7 (讗讬谞讚拽住讬诐 诪转讞讬诇讬诐 诪讗驻住). 讘砖讘讬诇 讛驻砖讟讜转 讗谞讬 诪讟驻诇 讻讗谉 讘讟拽住讟 讘讗谞讙诇讬转 讘诇讘讚 讜诇讗 砖讜讘专 讗转 讛专讗砖 注诐 诪讬诇讬诐 讻诪讜 don't.
住专讬拽转 讻诇 讛住讜讙专讬讬诐 讛诪专讜讘注讬诐 注诐 StringScanner
谞转讞讬诇 注诐 转讜讻谞讬转 专讗砖讜谞讛 讻讚讬 诇讛讘讬谉 讗讬讱 住专讬拽讛 注诐 StringScanner 注讜讘讚转:
require 'strscan'
text = 'I can [see] a [mountain] in the [distance]'
words_without_brackets = text.delete('[]')
scanner = StringScanner.new(text)
while scanner.scan_until(/\[/)
char_position = scanner.charpos
puts char_position
end
讛转讜爪讗讛:
7
15
33
讘讚讬讜拽 砖诇讜砖转 讛讗讬谞讚拽住讬诐 砖诇 讛住讜讙专讬讬诐 讛诪专讜讘注讬诐 讛驻讜转讞讬诐 讘讟拽住讟.
讛驻讬讻转 讛讗讬谞讚拽住讬诐 诇讗讬谞讚拽住讬诐 砖诇 诪讬诇讬诐
诪讗讬驻讛 谞拽讘诇 讗讬谞讚拽住 讛转讞诇讛 砖诇 诪讬诇讬诐? 谞讜讻诇 诇讛砖转诪砖 砖讜讘 讘 StringScanner. 讛驻注诐 讗谞讬 拽讜专讗 诇讜 诪转讜讱 Enumerator 讻讚讬 诇拽讘诇 诪注专讱 砖诇 讻诇 讛讗讬谞讚拽住讬诐 讜诪讞驻砖 专讜讜讞讬诐 讻讬 讝讛 诪讛 砖诪驻专讬讚 讗爪诇谞讜 讘讬谉 讛诪讬诇讬诐. 讘讚讜讙诪讗讜转 讛驻砖讜讟讜转 砖诇谞讜 讛转讜 砖讗讞专讬 专讜讜讞 诪转讞讬诇 诪讬诇讛 讞讚砖讛:
require 'strscan'
text = 'I can [see] a [mountain] in the [distance]'
words_without_brackets = text.delete('[]')
puts text
puts words_without_brackets
scanner = StringScanner.new(text)
while scanner.scan_until(/\[/)
char_position = scanner.charpos
puts char_position
end
word_scanner = StringScanner.new(words_without_brackets)
word_indexes = Enumerator.new do |y|
y << word_scanner.charpos
y << word_scanner.charpos while word_scanner.scan_until
end.to_a
pp word_indexes
讜讛驻注诐 讗谞讞谞讜 诪拽讘诇讬诐:
I can [see] a [mountain] in the [distance]
I can see a mountain in the distance
7
15
33
[0, 2, 6, 10, 12, 21, 24, 28]
讜讝讛 讻讘专 诪诪砖 拽专讜讘! 注讻砖讬讜 讘砖讘讬诇 诇诪爪讜讗 讗讬谞讚拽住讬诐 砖诇 诪讬诇讬诐 诪住讜诪谞讜转 爪专讬讱 专拽 诇住讚专 讗转 讛讗讬谞讚拽住讬诐 讜诇讛讜专讬讚 讗转 诪住驻专 讛住讜讙专讬讬诐 讛诪专讜讘注讬诐 驻讜转讞讬诐 讜住讜讙专讬诐 诇驻谞讬 讻诇 讗讞讚. 谞注讚讻谉 讗转 讛诇讜诇讗讛 讛砖谞讬讛 诇讻转讬讘 讛 Enumerator 讜谞拽讘诇:
require 'strscan'
text = 'I can [see] a [mountain] in the [distance]'
words_without_brackets = text.delete('[]')
puts text
puts words_without_brackets
word_scanner = StringScanner.new(words_without_brackets)
word_indexes = Enumerator.new do |y|
y << word_scanner.charpos
y << word_scanner.charpos while word_scanner.scan_until(/ /)
end.to_a
bracket_scanner = StringScanner.new(text)
bracket_indexes = Enumerator.new do |y|
y << bracket_scanner.charpos while bracket_scanner.scan_until(/\[/)
end
bracket_indexes = bracket_indexes.each_with_index.map do |char_index, count|
char_index - 2 * count - 1
end
pp word_indexes
pp bracket_indexes
讜讛转讜爪讗讛:
I can [see] a [mountain] in the [distance]
I can see a mountain in the distance
[0, 2, 6, 10, 12, 21, 24, 28]
[6, 12, 28]
讜讝讛 讻讘专 谞专讗讛 诪诪砖 讟讜讘 讻讬 拽诇 诇讛转讗讬诐 讗转 讛讗讬谞讚拽住讬诐 讜诇讙诇讜转 讗讬讝讛 诪讬诇讬诐 诪住讜诪谞讜转. 讛转讜讻谞讬转 讛讝讗转 讻讘专 诪讚驻讬住讛 2,4 讜 7:
require 'strscan'
text = 'I can [see] a [mountain] in the [distance]'
words_without_brackets = text.delete('[]')
puts text
puts words_without_brackets
word_scanner = StringScanner.new(words_without_brackets)
word_indexes = Enumerator.new do |y|
y << word_scanner.charpos
y << word_scanner.charpos while word_scanner.scan_until(/ /)
end.to_a
bracket_scanner = StringScanner.new(text)
bracket_indexes = Enumerator.new do |y|
y << bracket_scanner.charpos while bracket_scanner.scan_until(/\[/)
end
bracket_indexes = bracket_indexes.each_with_index.map do |char_index, count|
char_index - 2 * count - 1
end
bracket_indexes.each do |i|
word_index = word_indexes.find_index { |j| j == i }
puts word_index
end1 419
讛驻讬转专讜谞讜转 砖诇 讗转诪讜诇
讛讻驻转讜专 讛讻讬 讞砖讜讘 讘诪砖讞拽 Spelling Bee 讛讜讗 "讛驻讬转专讜谞讜转 砖诇 讗转诪讜诇".
诇讗 讻讬 讘驻讬转专讜谞讜转 砖诇 讗转诪讜诇 讬砖 专诪讝讬诐 诇讞讬讚讛 砖诇 讛讬讜诐 (诪诪讬诇讗 讻诇 讬讜诐 讬砖 讗讜转讬讜转 讗讞专讜转).
讗诇讗 砖讗讞专讬 砖诪谞住讬诐 讗转讙专, 讛专讙注 讛讝讛 砖讗谞讞谞讜 诇讜拽讞讬诐 驻住拽 讝诪谉, 诪住转讻诇讬诐 诪讛 讛讬讛 爪专讬讱 诇注砖讜转 讜诪讘讬谞讬诐 讗讬驻讛 讟注讬谞讜 讛讜讗 诪驻转讞 诇讛转拽讚诪讜转: 诇讬诪讜讚 讞讜诪专 讞讚砖, 谞讬住讜讬, 讞讝专讛 讜讛住拽转 诪住拽谞讜转. 讝讗转 讛砖诇砖讛 砖讗谞讞谞讜 爪专讬讻讬诐 诇讞驻砖 讘讻诇 讞讜讜讬讛 诇讬诪讜讚讬转.
1 419
讻诇 讛讚讘专讬诐 砖诇讗 讛住驻拽转讬
诇讗 诪砖谞讛 讻诪讛 讚讘专讬诐 讟讜讘讬诐 讛住驻拽转讬 讘讬讜诐 讻砖讛讬讜诐 谞讙诪专 讛讚讘专讬诐 讛专讗砖讜谞讬诐 砖讘讗讬诐 诇专讗砖 讛诐 讗诇讛 砖诇讗 讛住驻拽转讬 - 讛爪注转 讛诪讞讬专 砖诇讗 讛住驻拽转讬 诇砖诇讜讞, 讛诪讬讬诇 砖诇讗 讛住驻拽转讬 诇讻转讜讘, 讛住讬驻讜专 砖诇讗 讛住驻拽转讬 诇讛拽专讬讗 诇讬诇讚讬诐, 讛转专讙讬诇 讘注专讘讬转 砖诇讗 讛住驻拽转讬 诇住讬讬诐.
讗讞转 讛讚专讻讬诐 诇讛转诪讜讚讚 注诐 讻诇 讗讜转诐 讚讘专讬诐 砖诇讗 讛住驻拽转讬 讛讬讗 诇讛住转讻诇 注诇 讛讚讘专讬诐 砖讻谉 讛住驻拽转讬, 讜驻讛 讬砖 讟专讬拽. 讗诐 讛讚讘专讬诐 讛讬讞讬讚讬诐 砖讛住驻拽转诐 讛讬讜诐 讛诐 诪砖讬诪讜转 砖诇 讛砖讜讟祝, 讚讘专讬诐 砖诪讬砖讛讜 讝专拽 注诇讬讻诐, 讞砖讘讜谞讜转 砖讛讬讛 爪专讬讱 诇砖诇诐 专拽 讻讚讬 砖诪讞专 讬讙讬注讜 注讜讚 讞砖讘讜谞讜转 讗讝 讬讛讬讛 拽砖讛 诪讗讜讚 诇讛讝讬讝 讛爪讬讚讛 讗转 专讙砖讬 讛讗砖诪讛. "诇讗 讛住驻拽转讬 讻诇讜诐 讛讬讜诐" 讬讻讜诇 讘拽诇讜转 诇讛讬讚讞祝 讛爪讬讚讛 讗诐 专拽 讛讬转讛 诇讬 专砖讬诪讛 诪砖讻谞注转 砖诇 讚讘专讬诐 讞砖讜讘讬诐 砖讻谉 讛住驻拽转讬 诇注砖讜转.
讜讗讜诇讬 讝讛 讛诪砖讞拽 砖诇 谞讬讛讜诇 诪砖讬诪讜转 - 诇讗 诇注砖讜转 "讻诪讛 砖讬讜转专" 讗讜 讗转 "讛讚讘专讬诐 讛讚讞讜驻讬诐", 讗诇讗 诇讛拽驻讬讚 诇讛砖讗讬专 讻诇 讬讜诐 拽爪转 讝诪谉 诇拽讚诐 讗转 讛讚讘专讬诐 讛讞砖讜讘讬诐, 讛讚讘专讬诐 砖诇讜拽讞 讛诪讜谉 讝诪谉 诇讛讙讬注 讘讛诐 诇转讜爪讗讜转 讗讘诇 爪专讬讻讬诐 讗转 讛讗讛讘讛 砖诇谞讜 讻诇 讬讜诐.
讜诇驻注诪讬诐 讻诇 诪讛 砖爪专讬讱 讝讛 诇诪住讙专 讟讜讘 讬讜转专 讗转 讛讚讘专讬诐 砖讗谞讞谞讜 讻谉 注讜砖讬诐. 诇转转 诇讛诐 拽讜谞讟拽住讟 讜讗转 讛转诪讜谞讛 讛讙讚讜诇讛. 讛讚专讱 诇讛转诪讜讚讚 注诐 "讗讬谉 诇讬 诪住驻讬拽 讝诪谉" 讗讜 "诇讗 讛住驻拽转讬 讻诇讜诐 讛讬讜诐" 讛讬讗 诇讗 诇讛讜住讬祝 注讜讚 砖注讜转 注讘讜讚讛. 砖讬谞讜讬讬诐 讞讬爪讜谞讬讬诐 诇专讜讘 诇讗 诪转拽谞讬诐 讘注讬讜转 驻谞讬诪讬讜转. 讻讬讜讜谉 讟讜讘 讬讜转专 讛讜讗 诇讛讙讚讬专 诪讟专讜转 (诇讗 讛诪讜谉), 诇讛讙讚讬专 诇讻诇 诪讟专讛 专砖讬诪讛 砖诇 诪砖讬诪讜转 拽讟谞讜转 砖讗驻砖专 诇注砖讜转 拽爪转 讻诇 讬讜诐 讜诇讜讜讚讗 砖讻诇 讬讜诐 讛转拽讚诪谞讜 拽爪转 讘讗讞转 讛诪讟专讜转 讛讙讚讜诇讜转.
诇讗 讛住驻拽转讬 诇注谞讜转 诇讻诇 讛诪讬讬诇讬诐 讛讬讜诐, 讗讘诇 诇诪讚转讬 讟专讬拽 讞讚砖 讘驻讬讬转讜谉 讜讝讛 讛讬讛 砖讜讜讛 讗转 讛诪讗诪抓.
1 419
诪讜转专 诇砖谞讜转 讗转 讚注转讻诐
诇驻谞讬 10 砖谞讬诐 DHH 注诇讛 注诇 讛讘诪讛 讘 Rails World 讜住讬驻专 讻诪讛 讛讜讗 讗讜讛讘 讘讚讬拽讜转 End To End, 讻诪讛 讝讛 讛讚讘专 讛讻讬 讞砖讜讘 讘诪注专讻转, 讗讬讱 讻诇 住讜讙讬 讛讘讚讬拽讜转 讛讗讞专讬诐 诪讬讜转专讬诐 讜讗讬讱 专讬讬诇住 转注讜讚讚 诪驻转讞讬诐 诇讻转讜讘 专拽 讘讚讬拽讜转 诪注专讻转 诪拽爪讛 诇拽爪讛.
讛砖谞讛 讛讜讗 注诇讛 诇讘诪讛 讘 Rails World 讜住讬驻专 注诇 讛讛讞诇讟讛 诇诪讞讜拽 讗爪诇诐 讘诪讜爪专 讻诪注讟 讗转 讻诇 讘讚讬拽讜转 讛诪注专讻转 (谞砖讗专讜 10) 讜诇讛转诪拽讚 讘讘讚讬拽讜转 讬讞讬讚讛 讻讬讜讜谉 砖讘讚讬拽讜转 诪注专讻转 诇讗 诪讜爪讗讜转 诪住驻讬拽 讘讗讙讬诐, 谞砖讘专讜转 诇注转讬诐 拽专讜讘讜转 讜讛诐 诪讘讝讘讝讬诐 讛诪讜谉 讝诪谉 讘转讬拽讜谉 讘注讬讜转 驻讬拽讟讬讘讬讜转 - 讘注讬讜转 砖拽讜专讜转 专拽 讘讘讚讬拽讜转. 讛讞诇 诪讛讙讬专住讛 讛讘讗讛 砖诇 专讬讬诇住 讘专讬专转 讛诪讞讚诇 诇讗 转讛讬讛 诇讬爪讜专 讘讚讬拽转 End To End 诇讻诇 拽讜讚 讞讚砖 砖讗转诐 讻讜转讘讬诐.
讛诪住拽谞讛 诪讛住讬驻讜专 讛讬讗 诇讗 砖讘讚讬拽讜转 End To End 讝讛 讚讘专 讟讜讘 讗讜 讚讘专 专注. 讜讛讬讗 讗驻讬诇讜 诇讗 讘讬拽讜专转 注诇 DHH 砖讞砖讘 诪砖讛讜 讗讞讚 讜注诐 讛讝诪谉 讜讛谞讬住讬讜谉 砖讬谞讛 讗转 讚注转讜 (诇诪注砖讛 讝讛 诪讛 砖诪爪讜驻讛 诪讗谞砖讬 诪拽爪讜注). 讛诪住拽谞讛 讻讗谉 讛讬讗 诇砖讬诐 诇讘 砖讙诐 讗谞砖讬 讛诪拽爪讜注 讛讻讬 讟讜讘讬诐 砖注讜诪讚讬诐 注诇 讛讘诪讛 讜诪住讘讬专讬诐 讗讬讱 爪专讬讱 诇注讘讜讚 讘住讱 讛讻诇 诪住驻专讬诐 讗转 讚注转诐 诪谞住讬讜谞诐 讛讗讬砖讬.
讗谞砖讬诐 砖讞砖讘讜 砖讘讚讬拽讜转 拽爪讛 诇拽爪讛 讛谉 专注讬讜谉 讟讜讘, 讻转讘讜 讻讗诇讛 讜拽讬讘诇讜 诪讛谉 注专讱 诪砖诪注讜转讬 诇讗 讬转专讙砖讜 诪讛讛爪讛专讛 讛讗讞专讜谞讛 砖诇 DHH. 讛诐 讬诪砖讬讻讜 诇讻转讜讘 讘讚讬拽讜转 诪拽爪讛 诇拽爪讛 讻讬讜讜谉 砖讝讗转 讛讚专讱 讛谞讻讜谞讛 讘讬讜转专 注讘讜专诐. 讜讗谞砖讬诐 砖讞砖讘讜 砖讘讚讬拽讜转 诪拽爪讛 诇拽爪讛 讛谉 诇讗 专注讬讜谉 讟讜讘 讻讬讜讜谉 砖讛诐 讻讘专 谞讻讜讜 诪讛谉 (讻诪讜 砖 DHH 谞讻讜讜讛 讘砖谞讬诐 讛讗讞专讜谞讜转) 诪诪讬诇讗 诇讗 拽谞讜 讗转 讛讛诪诇爪讛 砖诇 诇驻谞讬 10 砖谞讬诐 讜讘讟讞 诇讗 讛转讞讬诇讜 讘讙诇诇 DHH 诇讻转讜讘 讘讚讬拽讜转 诪拽爪讛 诇拽爪讛.
诪讜转专 讜讗祝 专爪讜讬 诇砖谞讜转 讗转 讚注转讻诐 诇讗讜专 谞讬住讬讜谉 讞讬讬诐 讜谞讬诪讜拽讬诐 讟讜讘讬诐. 讻讚讗讬 诇讛砖拽讬注 讗转 讛诪讗诪抓 讜诇诪爪讜讗 讗转 砖讬讟讜转 讛驻讬转讜讞 砖诪转讗讬诪讜转 诇讻诐, 诇讗 讘讙诇诇 砖诪讬砖讛讜 讗诪专 砖爪专讬讱 诇注砖讜转 讻讻讛 讗讜 讗讞专转 (讗讜转讜 诪讬砖讛讜 诪讞专 讬讻讜诇 诇砖谞讜转 讗转 讚注转讜), 讗诇讗 讘讙诇诇 砖注讘讜专讻诐 讜注讘讜专 讛驻专讜讬拽讟 砖诇讻诐 讝讛 诪讛 砖注讜讘讚 讛讻讬 讟讜讘. 讜讻砖讝讛 诇讗 讬注讘讜讚 讟讜讘 讬讜转专? 谞讜, 讙诐 诇谞讜 诪讜转专 诇砖谞讜转 讚注讛.
1 419
诪讜转专 诇砖谞讜转 讗转 讚注转讻诐
诇驻谞讬 10 砖谞讬诐 DHH 注诇讛 注诇 讛讘诪讛 讘 Rails World 讜住讬驻专 讻诪讛 讛讜讗 讗讜讛讘 讘讚讬拽讜转 End To End, 讻诪讛 讝讛 讛讚讘专 讛讻讬 讞砖讜讘 讘诪注专讻转, 讗讬讱 讻诇 住讜讙讬 讛讘讚讬拽讜转 讛讗讞专讬诐 诪讬讜转专讬诐 讜讗讬讱 专讬讬诇住 转注讜讚讚 诪驻转讞讬诐 诇讻转讜讘 专拽 讘讚讬拽讜转 诪注专讻转 诪拽爪讛 诇拽爪讛.
讛砖谞讛 讛讜讗 注诇讛 诇讘诪讛 讘 Rails World 讜住讬驻专 注诇 讛讛讞诇讟讛 诇诪讞讜拽 讗爪诇诐 讘诪讜爪专 讻诪注讟 讗转 讻诇 讘讚讬拽讜转 讛诪注专讻转 (谞砖讗专讜 10) 讜诇讛转诪拽讚 讘讘讚讬拽讜转 讬讞讬讚讛 讻讬讜讜谉 砖讘讚讬拽讜转 诪注专讻转 诇讗 诪讜爪讗讜转 诪住驻讬拽 讘讗讙讬诐, 谞砖讘专讜转 诇注转讬诐 拽专讜讘讜转 讜讛诐 诪讘讝讘讝讬诐 讛诪讜谉 讝诪谉 讘转讬拽讜谉 讘注讬讜转 驻讬拽讟讬讘讬讜转 - 讘注讬讜转 砖拽讜专讜转 专拽 讘讘讚讬拽讜转. 讛讞诇 诪讛讙讬专住讛 讛讘讗讛 砖诇 专讬讬诇住 讘专讬专转 讛诪讞讚诇 诇讗 转讛讬讛 诇讬爪讜专 讘讚讬拽转 End To End 诇讻诇 拽讜讚 讞讚砖 砖讗转诐 讻讜转讘讬诐.
讛诪住拽谞讛 诪讛住讬驻讜专 讛讬讗 诇讗 砖讘讚讬拽讜转 End To End 讝讛 讚讘专 讟讜讘 讗讜 讚讘专 专注. 讜讛讬讗 讗驻讬诇讜 诇讗 讘讬拽讜专转 注诇 DHH 砖讞砖讘 诪砖讛讜 讗讞讚 讜注诐 讛讝诪谉 讜讛谞讬住讬讜谉 砖讬谞讛 讗转 讚注转讜 (诇诪注砖讛 讝讛 诪讛 砖诪爪讜驻讛 诪讗谞砖讬 诪拽爪讜注). 讛诪住拽谞讛 讻讗谉 讛讬讗 诇砖讬诐 诇讘 砖讙诐 讗谞砖讬 讛诪拽爪讜注 讛讻讬 讟讜讘讬诐 砖注讜诪讚讬诐 注诇 讛讘诪讛 讜诪住讘讬专讬诐 讗讬讱 爪专讬讱 诇注讘讜讚 讘住讱 讛讻诇 诪住驻专讬诐 讗转 讚注转诐 诪谞住讬讜谞诐 讛讗讬砖讬.
讗谞砖讬诐 砖讞砖讘讜 砖讘讚讬拽讜转 拽爪讛 诇拽爪讛 讛谉 专注讬讜谉 讟讜讘, 讻转讘讜 讻讗诇讛 讜拽讬讘诇讜 诪讛谉 注专讱 诪砖诪注讜转讬 诇讗 讬转专讙砖讜 诪讛讛爪讛专讛 讛讗讞专讜谞讛 砖诇 DHH. 讛诐 讬诪砖讬讻讜 诇讻转讜讘 讘讚讬拽讜转 诪拽爪讛 诇拽爪讛 讻讬讜讜谉 砖讝讗转 讛讚专讱 讛谞讻讜谞讛 讘讬讜转专 注讘讜专诐. 讜讗谞砖讬诐 砖讞砖讘讜 砖讘讚讬拽讜转 诪拽爪讛 诇拽爪讛 讛谉 诇讗 专注讬讜谉 讟讜讘 讻讬讜讜谉 砖讛诐 讻讘专 谞讻讜讜 诪讛谉 (讻诪讜 砖 DHH 谞讻讜讜讛 讘砖谞讬诐 讛讗讞专讜谞讜转) 诪诪讬诇讗 诇讗 拽谞讜 讗转 讛讛诪诇爪讛 砖诇 诇驻谞讬 10 砖谞讬诐 讜讘讟讞 诇讗 讛转讞讬诇讜 讘讙诇诇 DHH 诇讻转讜讘 讘讚讬拽讜转 诪拽爪讛 诇拽爪讛.
诪讜转专 讜讗祝 专爪讜讬 诇砖谞讜转 讗转 讚注转讻诐 诇讗讜专 谞讬住讬讜谉 讞讬讬诐 讜谞讬诪讜拽讬诐 讟讜讘讬诐. 讻讚讗讬 诇讛砖拽讬注 讗转 讛诪讗诪抓 讜诇诪爪讜讗 讗转 砖讬讟讜转 讛驻讬转讜讞 砖诪转讗讬诪讜转 诇讻诐, 诇讗 讘讙诇诇 砖诪讬砖讛讜 讗诪专 砖爪专讬讱 诇注砖讜转 讻讻讛 讗讜 讗讞专转 (讗讜转讜 诪讬砖讛讜 诪讞专 讬讻讜诇 诇砖谞讜转 讗转 讚注转讜), 讗诇讗 讘讙诇诇 砖注讘讜专讻诐 讜注讘讜专 讛驻专讜讬拽讟 砖诇讻诐 讝讛 诪讛 砖注讜讘讚 讛讻讬 讟讜讘. 讜讻砖讝讛 诇讗 讬注讘讜讚 讟讜讘 讬讜转专? 谞讜, 讙诐 诇谞讜 诪讜转专 诇砖谞讜转 讚注讛.
1 419
诪讛 讛 Use Case
诇讗讬拽讗讛 讛讙注转讬 注诐 诪砖讬诪讛 - 诇拽谞讜转 诪讞讘转 讞讚砖讛. 讛诪讞讘转 讛谞讜讻讞讬转 讛讬转讛 砖专讜讟讛 诇讙诪专讬 讜讘专讜专 砖讗讬 讗驻砖专 讛讬讛 诇讛讬砖讗专 讗讬转讛 讜讗诐 讻讘专 拽讜谞讬诐 讗讝 注讚讬祝 诇砖讚专讙. 讜诪讛 讛讻讬 讛驻专讬注 诇讬 讘诪讞讘转? 讛讙讜讚诇 讻诪讜讘谉. 讛诪讞讘转 砖诇讬 讛讬转讛 拽讟谞讛 讜讗祝 驻注诐 诇讗 讛讬讛 诪拽讜诐 诇讟讙谉 讗转 讻诇 讛讚讘专讬诐 砖专爪讬转讬. 转讻诇'住 讚讬 砖诪讞转讬 讻砖讛讬讗 谞砖专讟讛 讻讬 讝讗转 讛讬转讛 讛讝讚诪谞讜转 诇拽谞讜转 讗转 讛诪讞讘转 讛讙讚讜诇讛 砖专爪讬转讬.
诪讛专 诪讗讜讚 讛讘谞转讬 讗讬讝讛 Use Case 专讗讬转讬, 讜讗讬讝讛 Use Case-讬诐 驻住驻住转讬:
1. 讛诪讞讘转 砖诇讬 讛讬转讛 讘讚讬讜拽 讘讙讜讚诇 砖讛转讗讬诐 诇讗专讜谉. 讗转 讛诪讞讘转 讛讙讚讜诇讛 讗讬谉 讗讬驻讛 诇砖讬诐.
2. 讛诪讞讘转 砖诇讬 讛讬转讛 拽爪转 讙讚讜诇讛 诇诪讚讬讞 讗讘诇 谞讻谞住讛. 注诇 讛讞讚砖讛 讗讬谉 诪讛 诇讚讘专.
3. 诪讞讘转 讙讚讜诇讛 爪专讬讻讛 诪讻住讛 讙讚讜诇, 讗讘诇 讛诪讻住讛 砖讛讬讛 诇讬 讛转讗讬诐 专拽 诇诪讞讘转 讛讬砖谞讛.
讻诪讜讘谉 砖讛专讘讛 讬讜转专 拽诇 诇专讗讜转 讗转 讛讚讘专讬诐 砖诇讗 注讜讘讚讬诐 讟讜讘 诪讗砖专 讗转 讗诇讛 砖讻谉. 讙诐 讘讻诇讬 诪讟讘讞 讜讘诪讬讜讞讚 讘拽讜讚. 诇驻谞讬 砖专爪讬诐 诇驻诇讟驻讜专诪讛 讗讞专转 砖讜讜讛 诇讛讻讬谉 专砖讬诪讛 诪住讜讚专转 砖诇 讻诇 讛讚讘专讬诐 砖讬讛讬讜 砖讜谞讬诐 - 讙诐 诇讟讜讘讛 讜讙诐 诇专注讛.
1 419
转讙讬讚 诪讛 讻谉
诪砖驻讟 驻砖讜讟 砖注讜讘讚 讟讜讘 讻砖讘讜谞讬诐 讛专爪讗讛 诪讜诇 拽讛诇, 讻砖诪注爪讘讬诐 诪诪砖拽讬 诪砖转诪砖, 讻砖诪讚讘专讬诐 注诐 讛讬诇讚讬诐 讜讗驻讬诇讜 讘砖讬讞讜转 注诐 AI.
转讙讬讚讜 诪讛 讻谉 诇注砖讜转.
驻拽讜讚转 git checkout 讬讜讚注转 诇讛讚驻讬住 诇讻诐 诇注讘讜专 诇讙讬专住讛 讛讞讚砖讛 讬讜转专 git switch, 讜讗诐 讞讝专转诐 讗讞讜专讛 诇拽讜诪讬讟 讙讬讟 讬讻转讜讘 诇讻诐 砖讗转诐 讘诪爪讘 detached head 讜转砖讬诪讜 诇讘 诇讛讬讝讛专 诪讛拽讜诪讬讟 讛讘讗.
讘转讬注讜讚 砖诇 驻拽讜讚转 with 讘 MDN 讬砖 驻讬住拽讛 砖诪住讘讬专讛 砖驻拽讜讚讛 讝讜 讻讘专 诇讗 专爪讜讬讛 讜讛诪诇爪讛 讘诪讛 诇讛砖转诪砖 讘诪拽讜诐.
讻砖讗谞讬 诪谞住讛 诇讛专讬抓 驻拽讜讚讛 讘 Ubuntu 讜讛驻拽讜讚讛 诇讗 诪讜转拽谞转 讗谞讬 讗拽讘诇 砖讙讬讗讛 砖诪爪讬注讛 诇讬 诇讛转拽讬谉 讗转 讗讜转讛 讛驻拽讜讚讛.
讛诪注讘专 诇"诪讛 讻谉" 诪讻谞讬住 讗转 讛砖讬讞讛 诇拽讜谞讟拽住讟, 诇讜拽讞 砖诇讬讟讛 讜诪讻讜讜谉 讗转 讛诪砖讱 讛砖讬讞讛 诇讛爪诇讞讛. 讛讜讗 诪专讙讬注 讗讜转谞讜 讜诪讘讛讬专 诇谞讜 砖诇讗 注砖讬谞讜 诪砖讛讜 诇讗 讘住讚专, 驻砖讜讟 驻住驻住谞讜 爪注讚 讗讜 诇讗 讛讬讬谞讜 诪注讜讚讻谞讬诐. 讛谞讛 注讜讚 讻诪讛 谞讬住讜讞讬诐 砖讻讚讗讬 诇讗诪抓:
讘诪拽讜诐 "诇讗 讻转讘转 讘讚讬拽讜转" 谞讻转讜讘 "转讜住讬祝 讘讚讬拽转 讬讞讬讚讛 诇讜讜讚讗 砖讚讘专讬诐 注讜讘讚讬诐 讙诐 讗诐 讛讬转讛 砖讙讬讗转 转拽砖讜专转".
讘诪拽讜诐 "讞住专 讟讬驻讜诇 讘诪拽专讬 拽爪讛" 谞讻转讜讘 "转讜住讬祝 讟讬驻讜诇 讘诪拽专讛 砖诪砖转诪砖 注讝讘 讗转 讛转讛诇讬讱 讘诇讬 诇住讬讬诐 讗讜转讜".
讘诪拽讜诐 "讗诇 转砖讻驻诇 讗转 讗讜转讜 拽讜讚 讘-3 诪拽讜诪讜转 砖讜谞讬诐" 谞讻转讜讘 "讛讜爪讗 讗转 讛拽讜讚 讛诪砖讜转祝 诇驻讜谞拽爪讬讛".
讜讻谉 讘专讜专 砖讬讜转专 拽诇 诇专讗讜转 诪讛 诇讗 讘住讚专 诪诇讛诪诇讬抓 诪讛 讻谉 诇注砖讜转. 讻讚讗讬 诇讝讻讜专 砖状诇讗 诇讛讞诇讬讟状 讝讛 驻砖讜讟 诇转转 诇诪讬砖讛讜 讗讞专 (讗讜诇讬 驻讞讜转 诪讜讻砖专) 诇讛讞诇讬讟 讘砖讘讬诇谞讜.
