uz
Feedback
ToCode

ToCode

Kanalga Telegramโ€™da oโ€˜tish

ื˜ื™ืคื™ื ืงืฆืจื™ื ืœืžืชื›ื ืชื™ื ืžืืช ื™ื ื•ืŸ ืคืจืง

Ko'proq ko'rsatish
1 420
Obunachilar
Ma'lumot yo'q24 soatlar
Ma'lumot yo'q7 kunlar
-530 kunlar
Postlar arxiv
ToCode
1 420
ืฉื‘ ืจื’ืข ื‘ืฆื“ ื˜ื™ื™ืคืกืงืจื™ืคื˜, ืื ื™ ืฆืจื™ืš ืœืขื‘ื•ื“ ื ืชื‘ื•ื ืŸ ื‘ืฉืชื™ ืคื•ื ืงืฆื™ื•ืช ื‘ื˜ื™ื™ืคืกืงืจื™ืคื˜ ืฉืžืฉืชืžืฉื•ืช ื‘ืžืขืจื›ืช ื”ื˜ื™ืคื•ืกื™ื ืฉืœ ืงื™ืกืœื™ ืขื‘ื•ืจ ื’ื™ืฉื” ืœื‘ืกื™ืก ื ืชื•ื ื™ื SQL:
async editNote(username: string, noteId: number, newText: string) {
  const user = await db.selectFrom('users').selectAll().where('users.name', '=', username).executeTakeFirstOrThrow();

  return db
    .updateTable('notes')
    .set('text', newText)
    .where(noteBelongsToUser(user.id, noteId))
    .returningAll()
    .executeTakeFirstOrThrow()
},

async deleteNote(username: string, noteId: number) {
  const user = await db.selectFrom('users').selectAll().where('users.name', '=', username).executeTakeFirstOrThrow();

  return db
    .deleteFrom('notes')
    .where(noteBelongsToUser(user.id, noteId))
    .returningAll()
    .executeTakeFirstOrThrow()
},
ืจื•ืื™ื ืืช ื”ื“ืžื™ื•ืŸ? ื‘ืจื•ืจ ืฉื›ืŸ. ืฉืชื™ื”ืŸ ืžื•ืฆื™ืื•ืช ืฉืื™ืœืชื” ืจืืฉื•ื ื” ื›ื“ื™ ืœืงื‘ืœ ืืช ื”ืžืฉืชืžืฉ, ื•ืื– ื‘ื•ื ื•ืช ืฉืื™ืœืชื” ื ื•ืกืคืช ื‘ืฉื‘ื™ืœ ืœืขืฉื•ืช ืžืฉื”ื• ืขื ื”ืžืฉืชืžืฉ - ืคืขื ืื—ืช ืœืžื—ื•ืง ืžื™ื“ืข ื•ืคืขื ืฉื ื™ื” ืœืขื“ื›ืŸ ืžื™ื“ืข. ื ื™ืกื™ื•ืŸ ืœืื—ื“ ืื•ืชืŸ ื•ืœื‘ื˜ืœ ืืช ื”ืงื•ื“ ื”ืžืฉื•ืชืฃ ืขืฉื•ื™ ืœื”ื™ืจืื•ืช ื›ืš:
async function dry(db: Kysely<Database>, 
  username: string,
  noteId: number,
  f: (db: Kysely<Database>) => ???) {
  const user = await db.selectFrom('users').selectAll().where('users.name', '=', username).executeTakeFirstOrThrow();
  
  return f(db)
    .where(noteBelongsToUser(user.id, noteId))
    .returningAll()
    .executeTakeFirstOrThrow()
}
ื”ืงื•ื“ ื”ื–ื” ืขื•ื‘ื“ ื•ืืคืฉืจ ืœื”ืฉืชืžืฉ ื‘ื• ื‘ืงืœื•ืช ืœืžืฉืœ:
async easyDeleteNote(username: string, noteId: number) {
  dry(db, username, noteId, (db) => db.deleteFrom('notes'))
}
ื™ืฉ ืจืง ื‘ืขื™ื” ืื—ืช, ืกื™ืžืŸ ืื—ื“ ืฉื—ืกืจ ืœื™ - ืžื” ืžื—ื–ื™ืจื” ื”ืคื•ื ืงืฆื™ื” f ? ืžื” ืœื›ืชื•ื‘ ื‘ืžืงื•ื ืกื™ืžื ื™ ื”ืฉืืœื”? ื‘ืขื•ืœื ืžืชื•ืงืŸ ื˜ื™ื™ืคืกืงืจื™ืคื˜ ื”ื™ื” ืžื–ื”ื” ืฉืื ื™ ืžืฉืชืžืฉ ืจืง ื‘ื—ืœืงื™ื ืžืฉื•ืชืคื™ื ืžื‘ื™ืŸ ืฉื ื™ ื”ืžืžืฉืงื™ื ืฉื”ืคื•ื ืงืฆื™ื•ืช ืžื—ื–ื™ืจื•ืช ื•ืžืืคืฉืจ ืœื™ ืœื›ืชื•ื‘ ืื™ื—ื•ื“ ืฉืœ ื”ื˜ื™ืคื•ืกื™ื ืื• ืื•ืœื™ ืืคื™ืœื• ืžื‘ื™ืŸ ืืช ื–ื” ืœื‘ื“. ื‘ืขื•ืœื ืฉืœื ื• ื–ื” ืขื•ื“ ืื—ื“ ืžื”ืžืฆื‘ื™ื ื‘ื”ื ื”ื‘ืื ื• ืืช ื˜ื™ื™ืคืกืงืจื™ืคื˜ ืœืงืฆื”. ืขื›ืฉื™ื• ืฆืจื™ืš ืœื‘ื—ื•ืจ, ื”ืื ืœื”ืชืขืงืฉ ืขืœ ืžืขืจื›ืช ื”ื˜ื™ืคื•ืกื™ื ืฉืœ ื˜ื™ื™ืคืกืงืจื™ืคื˜ ืื• ืœื”ื–ื™ื– ืื•ืชื” ื”ืฆื™ื“ื” ืœืจื’ืข ืจืง ื‘ืฉื‘ื™ืœ ืœืชืงืŸ ืืช ื”ื›ืคื™ืœื•ืช? ื”ื’ื™ืฉื” ืฉืœื™ ืคื” ื”ื™ื ื™ื•ืชืจ ืคืจื’ืžื˜ื™ืช. ืื ืœื ื”ืฆืœื—ืชื™ ืœืžืฆื•ื ืืช ื”ื˜ื™ืคื•ืก ืฉืคื•ืชืจ ืœื™ ืืช ื”ื‘ืขื™ื” ืื ื™ ืฉืžื— ืœื›ืชื•ื‘ any ื‘ืชื•ืš ืคื•ื ืงืฆื™ื™ืช ืขื–ืจ ื‘ืฉื‘ื™ืœ ืฉืื•ื›ืœ ืœื”ืชืงื“ื ื•ืœืงืฆืจ ืืช ื”ืงื•ื“. ืชืžื™ื“ ืืคืฉืจ ื™ื”ื™ื” ืœื”ื—ืœื™ืฃ ืืช ื–ื” ืœื‘ื“ื™ืงืช ื˜ื™ืคื•ืกื™ื ื™ื•ืชืจ ืกืคืฆื™ืคื™ืช ื‘ืขืชื™ื“ ื›ืฉื˜ื™ื™ืคืกืงืจื™ืคื˜ ื™ื”ื™ื” ืžืกืคื™ืง ื—ื›ื.

ToCode
1 420
ื‘ื’ื“ื•ืœ ื–ื” ืขื•ื‘ื“ ื’'ื•ืื™ ืฆ'ื ื’ (ืื ื™ ืžืงื•ื•ื” ืฉืื ื™ ื›ื•ืชื‘ ืืช ื”ืฉื ื”ื–ื” ื ื›ื•ืŸ) ืขืฉืชื” ืขื‘ื•ื“ื” ืžื˜ื•ืจืคืช ื›ื“ื™ ืœืืคืฉืจ ืœ node.js ืœื˜ืขื•ืŸ ืขื require ืžื•ื“ื•ืœื™ื ืฉืœ ESM. ื”ื™ื ื›ืชื‘ื” ืขืœ ื–ื” ื‘ื‘ืœื•ื’ ืฉืœื” ื›ืืŸ: https://joyeecheung.github.io/blog/2024/03/18/require-esm-in-node-js/ ืื™ืŸ ืกืคืง ืฉื”ืื•ืคืŸ ืฉื‘ื• ืื ื—ื ื• ื›ื•ืชื‘ื™ื TypeScript ื‘ node.js ื”ื•ื ืขืงื•ื ื”ืจื‘ื” ื‘ื’ืœืœ ื”ืกื™ืคื•ืจ ื”ื–ื”. ื‘ืฉื‘ื™ืœ ืฉื“ื‘ืจื™ื ื™ืขื‘ื“ื• ื›ืžื• ืฉืฆืจื™ืš ื‘ืจื•ื‘ ื”ืคืจื•ื™ืงื˜ื™ื ืื ื—ื ื• ื›ื•ืชื‘ื™ื ืงื•ื“ TypeScript ืฉื ืจืื” ื›ืžื• ESM, ืื‘ืœ ืื– ืžืงืžืคืœื™ื ืื•ืชื• ืœ CJS ื‘ืฉื‘ื™ืœ ืฉ node ื™ืจื™ืฅ ืื•ืชื•, ื•ื–ื” ื‘ื’ื“ื•ืœ ืขื•ื‘ื“ ืขื“ ืฉืžื ืกื™ื ืœืขืฉื•ืช ื“ื‘ืจื™ื ืฉื™ืฉ ืจืง ื‘ ESM ื•ืื– ื”ื›ืœ ื ืฉื‘ืจ. ื‘ืงื™ืฆื•ืจ ื’'ื•ืื™ ืฆ'ื ื’ ื›ืชื‘ื” PR ืฉืžืืคืฉืจ ืœืงื•ื“ CJS ืœืขืฉื•ืช require ืœืงื•ื“ ESM, ืฉื–ื” ื›ื‘ืจ ืžืื•ื“ ืžืฉืคืจ ืืช ื”ืžืฆื‘ ืœื”ืจื‘ื” ืžืฆื‘ื™ื. ืื‘ืœ ื–ื” ืขื“ื™ื™ืŸ ืขืงื•ื ื›ื™ ื–ื” ืœื ืžื˜ืคืœ ื‘ื‘ืขื™ื” ื”ืืžื™ืชื™ืช, ืฉื”ื™ื ื”ืงื•ืžืคื™ืœืฆื™ื” ืœ CJS ืจืง ื‘ืฉื‘ื™ืœ ืฉื“ื‘ืจื™ื ื™ืขื‘ื“ื• ื›ืžื• ืฉืฆืจื™ืš ืขื ืžื•ื“ื•ืœื™ื ื™ืฉื ื™ื ื‘ npm. (ื›ื™ ืื ื”ื›ืœ ื”ื™ื” ESM ืœื ื”ื™ื™ื ื• ืฆืจื™ื›ื™ื ืœื˜ืขื•ืŸ ESM ืขื require). ืื‘ืœ ื”ื ืงื•ื“ื” ื”ื›ื™ ื—ืฉื•ื‘ื” ื›ืืŸ ื”ื™ื ืžื” ืœื ืขื•ื‘ื“ - ืœืžืจื•ืช ื›ืœ ื”ืขื‘ื•ื“ื”, ืœืžืจื•ืช ืฉื”ื™ื ื”ืฆืœื™ื—ื” ืœืคืชื•ืจ ื”ืจื‘ื” ื‘ืขื™ื•ืช ืœืื ืฉื™ื, ื”ื™ื ืขื“ื™ื™ืŸ ื”ืฉืื™ืจ ื ืงื•ื“ื” ืคืชื•ื—ื” - ื” await ืžื—ื•ืฅ ืœื›ืœ ืคื•ื ืงืฆื™ื” ืœื ื™ืขื‘ื•ื“. ื•ืคื” ื™ืฉ ื”ืชืœื‘ื˜ื•ืช ืืžื™ืชื™ืช ืฉืื ื—ื ื• ืžื•ืฆืื™ื ื‘ื”ืจื‘ื” ืžืขืจื›ื•ืช ื•ืกืคืจื™ื•ืช ื•ื–ื” ืžืขื ื™ื™ืŸ ืœืจืื•ืช ืื™ืš ื”ื“ื‘ืจื™ื ื”ืืœื” ื ื•ืฆืจื™ื. ืžื™ ืฉื›ื•ืชื‘ืช ืืช ื”ืงื•ื“ ื™ื•ื“ืขืช ืฉื™ืฉ ืœื” ืžืงืจื” ืฉื”ื™ื ืœื ืจื•ืฆื” ืœื˜ืคืœ ื‘ื•, ื›ื™ ื”ื•ื ืžืกื•ื‘ืš ื•ืžื—ื•ืฅ ืœืกืงื•ืค, ืื– ื”ื™ื ืžื™ื™ืฆืจืช ืคื™ืชืจื•ืŸ ืฉืขื•ื‘ื“ ืจืง ืœ 90% ืžื”ืžืงืจื™ื. ืฉื ืชื™ื™ื ืื—ืจ ื›ืš ืžื™ืฉื”ื• ืžื’ื™ืข ืœืžืขืจื›ืช ื”ื–ืืช ื•ืžื ืกื” ืœื”ืจื™ืฅ ืืช ืื•ืชื ืžืงืจื™ื ืฉืœื ื ืชืžื›ื™ื ื•ืœื ืžื‘ื™ืŸ - ืื™ืš ื–ื” ืœื ืขื•ื‘ื“? ื”ืจื™ ื‘ื›ืœ ื”ืชื™ืขื•ื“ ื›ืชื•ื‘ ืฉืืคืฉืจ ืœืขืฉื•ืช XYZ. ืžื” ืžื™ื•ื—ื“ ื‘ืื™ืš ืฉืื ื™ ืขื•ืฉื” ืืช ื–ื”? ืœืžื” ืจืง ืืฆืœื™ ื–ื” ืœื ืขื•ื‘ื“? ื‘ืžืงืจื™ื ื›ืืœื” ื”ืชืงืฉื•ืจืช ื”ื™ื ื”ื›ืœ. ืงื•ื“ ืฉืžื˜ืคืœ ื‘ 90% ืžื”ืžืงืจื™ื ืฆืจื™ืš ืœื–ื”ื•ืช ืืช ื” 10% ื”ื ื•ืชืจื™ื ื•ืœื”ืฆื™ื’ ื”ื•ื“ืขืช ืฉื’ื™ืื” ืžืื•ื“ ืžืคื•ืจื˜ืช ืขื“ื™ืฃ ืขื ืงื™ืฉื•ืจ ืœื”ืกื‘ืจ ืžื” ืžื™ื•ื—ื“ ื‘ื“ื‘ืจ ืฉื ื™ืกื™ืช ืœืขืฉื•ืช ื•ืœืžื” ื”ื—ืœื˜ื ื• ืœื ืœืชืžื•ืš ื‘ื–ื”. ืื™ืŸ ื“ื‘ืจ ื™ื•ืชืจ ืžืชืกื›ืœ ืžืœืฉื‘ืช ื™ื•ืžื™ื™ื ืจืง ื‘ืฉื‘ื™ืœ ืœื’ืœื•ืช ืฉื”ืžืงืจื” ืฉืœืš ื ืคืœ ืžื—ื•ืฅ ืœืกืงื•ืค.

ToCode
1 420
ื•ืื ืื™ืŸ before ื‘ืกืคืจื™ื™ืช ื”ื‘ื“ื™ืงื” ืฉืœืš? ื‘ื™ืžื™ื ืืœื” ืื ื™ ื‘ื•ื ื” ืžื—ื“ืฉ ืืช ืงื•ืจืก node.js ืฉื‘ืืชืจ. ื”ื’ื™ืจืกื” ื”ื—ื“ืฉื” ืชื›ื™ืœ ื”ืžื•ืŸ TypeScript ื•ืชื›ืกื” ื‘ื ื•ืกืฃ ืœ node ื’ื ืืช Deno ื• Bun ื•ื”ืžื˜ืจื” ืฉืœื™ ื”ื™ื ืฉืจื•ื‘ ื”ืงื•ืจืก ื™ืขื‘ื•ื“ ื‘ื›ืœ ืฉืœื•ืฉืช ืกื‘ื™ื‘ื•ืช ื”ืจื™ืฆื”. ื‘ื’ื“ื•ืœ ื”ืžืฆื‘ ืฉืœ TypeScript ื‘ืฆื“ ืฉืจืช ื”ื•ื ืžืื•ื“ ื˜ื•ื‘ ื•ื’ื ื“ื™ื ื• ื•ื’ื ื‘ืืŸ ืžืกืคื™ืง ื‘ืฉืœื™ื ื‘ืฉื‘ื™ืœ ืœื›ืชื•ื‘ ืขืœื™ื”ื, ืื‘ืœ ืžื“ื™ ืคืขื ื™ืฉ ืฉื˜ื•ื™ื•ืช ื•ื‘ืขื™ื•ืช ืชืื™ืžื•ืช. ื“ื•ื’ืžื” ืงื˜ื ื” ื”ื™ื ืฉื›ืฉื˜ื•ืขื ื™ื ืืช ื”ืžื•ื“ื•ืœ test ืฉืœ node ืžืชื•ืš deno ืื™ืŸ ืชืžื™ื›ื” ื‘ before. ื•ืžื” ืื ื‘ื›ืœ ื–ืืช ืื ื—ื ื• ืจื•ืฆื™ื ืœื”ืจื™ืฅ ืงื•ื“ ืœืคื ื™ ื‘ื“ื™ืงื”? ื ื•, ืชืžื™ื“ ืืคืฉืจ ืœื”ื™ื•ืช ื™ืฆื™ืจืชื™ื™ื. ื‘ื“ื•ื’ืžื” ืžื”ืงื•ืจืก ืจืฆื™ืชื™ ืœื”ืจื™ืฅ ืงื•ื“ ืฉืžืืชื—ืœ ื˜ื‘ืœื” ื‘ื‘ืกื™ืก ื ืชื•ื ื™ื ื‘ื–ื™ื›ืจื•ืŸ ืœืคื ื™ ืฉืื ื™ ืžืจื™ืฅ ืงื•ื“. ื‘ื”ืฉืจืื” ืž pytest ื›ืชื‘ืชื™ ื‘ืžืงื•ื before ืืช ื”ืคื•ื ืงืฆื™ื” ื”ื‘ืื”:
import { Database } from '@/db_types.ts'
import { Kysely } from 'kysely'
import { DenoSqliteDialect } from "@soapbox/kysely-deno-sqlite";
import { DB as Sqlite } from 'https://deno.land/x/sqlite/mod.ts';

export const useDB = async (test: (db: Kysely<Database>) => Promise<void>) => {
  const _db = new Kysely<Database>({
    dialect: new DenoSqliteDialect({
      database: new Sqlite(':memory:'),
    }),
  });

  await _db.schema
    .createTable('contact_info')
    .addColumn('id', 'integer', (col) => col.primaryKey())
    .addColumn('name', 'text', (col) => col.notNull())
    .addColumn('email', 'text', col => col.unique())
    .execute()

  try {
    await test(_db);
  } finally {
    await _db.destroy();
  }
}
ืขื›ืฉื™ื• ื”ื‘ื“ื™ืงื” ืฆืจื™ื›ื” ืจืง ืœื”ืคืขื™ืœ ืืช ื”ืคื•ื ืงืฆื™ื” ื•ื”ื™ื ืžืงื‘ืœืช ืื•ื˜ื•ืžื˜ื™ืช ื’ื ืืช ืงื•ื“ ื”ืื™ืชื—ื•ืœ ื•ื’ื ืืช ืงื•ื“ ื”ื ื™ืงื•ื™. ื–ื” ื ืจืื” ื›ื›ื”:
test('POST /contacts created a new contact', async () => {
  await useDB(async db => {
    await superdeno(app(db))
    .post('/api/v1/contacts')
    .set('Accept', 'application/json')
    .send({name: "a", email: "a@gmail.com"})
    .expect(200);

  const res = await superdeno(app(db))
    .get('/api/v1/contacts')
    .set('Accept', 'application/json')
  
  assert.deepEqual([
        { id: 1, name: "a", email: "a@gmail.com" }
      ], res.body);
  })
});

ื•ื›ืŸ ื”ืžื—ืฉื‘ื” ื”ืจืืฉื•ื ื” ืฉืœื™ ื”ื™ืชื” ืฉื”ื—ื™ื™ื ื”ื™ื• ืžื•ืฉืœืžื™ื ืื ื“ื‘ืจื™ื ื”ื™ื• ืขื•ื‘ื“ื™ื ื‘ื›ืœ ื”ืกื‘ื™ื‘ื•ืช. ืื‘ืœ ื‘ืžื—ืฉื‘ื” ืฉื ื™ื” ืื ื™ ื—ื•ืฉื‘ ืฉืœืœืžื•ื“ ืœื”ืกืชื“ืจ ื’ื ื›ืฉื“ื‘ืจื™ื ืœื ืขื•ื‘ื“ื™ื ื›ืžื• ื‘ืกืคืจ ื–ื• ื’ื ืžื™ื•ืžื ื•ืช ื—ืฉื•ื‘ื” ืฉืฉื•ื•ื” ืœื”ืจืื•ืช ื‘ืงื•ืจืก.

ToCode
1 420
ืจืง ืžืจื’ื™ืฉ ื›ื›ื” "ื”ืงื•ื“ ื”ื–ื” ืคื—, ืื™ ืืคืฉืจ ืœืชื—ื–ืง ืื•ืชื• ื—ื™ื™ื‘ื™ื ืœื–ืจื•ืง ื”ื›ืœ ื•ืœื›ืชื•ื‘ ืžื—ื“ืฉ. ืื™ืŸ ื‘ืจื™ื”." "ืฉืžืข ืื ื™ ืœื ืžื‘ื™ืŸ ืขืœ ืžื” ืžืฉืœืžื™ื ืœื ื• ื‘ื›ืœืœ. ื”ืžื•ื“ืœ ื”ืขืกืงื™ ืฉืœ ื”ืกื˜ืืจื˜-ืืค ื”ื–ื” ืœื ื”ื’ื™ื•ื ื™ ื•ื”ืžื•ืฆืจ ืœื ืขื•ื‘ื“. ื ืก ืฉื”ืžืฉืงื™ืขื™ื ืžืžืฉื™ื›ื™ื ืœืฉืœื." "ืชืงืฉื™ื‘ื™ ื” Python ื”ื–ื” ืœื ื™ืชืคื•ืก. ืื™ืŸ ืžืฆื‘ ืฉืื ืฉื™ื ื™ืขื–ื‘ื• ืืช ืคืจืœ ื‘ืฉื‘ื™ืœ ืฉืคื” ื›ืœ ื›ืš ืžืฉืขืžืžืช." "ืื ื™ ืœื ืžืืžื™ื ื” ืฉื”ื ืœื ื”ืชืขื ื™ื™ื ื• ื‘ืคืจื•ื™ืงื˜, ืื™ืš ื”ืœื›ื” ื—ืฆื™ ืฉื ื”. ื—ื‘ืœ ืฉื‘ื›ืœืœ ื ื›ื ืกืชื™ ืœื–ื”, ืขื“ื™ืฃ ื”ื™ื” ืœืžืฆื•ื ืขื‘ื•ื“ื” ืืžื™ืชื™ืช." "ื”ืคืขื ื–ื” ื‘ื˜ื•ื— ื™ืฆืœื™ื—. ื‘ื˜ื•ื—." ืœืคืขืžื™ื ื›ืฉื”ื‘ืจืš ื›ื•ืื‘ืช ื–ื” ื‘ื’ืœืœ ืฉื”ื•ืœืš ืœืจื“ืช ื’ืฉื. ืœืคืขืžื™ื ื”ื™ื ืกืชื ื›ื•ืื‘ืช. ื•ืœืคืขืžื™ื ื™ืฉ ื’ืฉื ื‘ืœื™ ืงืฉืจ ืœืชื—ื•ืฉื”. ืžื•ืชืจ ืœื”ืจื’ื™ืฉ ื›ืœ ื“ื‘ืจ. ื—ืฉื•ื‘ ืœื”ื‘ื“ื™ืœ ื‘ื™ืŸ ื”ืชื—ื•ืฉื” ืœื“ื‘ืจ ื”ืืžื™ืชื™. "ืื ื™ ืžืจื’ื™ืฉ ืฉื”ืงื•ื“ ืœื ื˜ื•ื‘. ืืœื” ื”ื“ื‘ืจื™ื ืฉืœื“ืขืชื™ ืœื ืขื•ื‘ื“ื™ื ื‘ื•. ืืœื” ื”ืกื™ื‘ื•ืช ื‘ื’ืœืœืŸ ื”ืงื•ื“ ื ื›ืชื‘ ื›ื›ื” ืื‘ืœ ืœื“ืขืชื™ ืกื™ื‘ื•ืช ืืœื” ื›ื‘ืจ ืœื ืจืœื•ื•ื ื˜ื™ื•ืช. ืืœื” ื”ื“ื‘ืจื™ื ืฉืื ื™ ื—ื•ืฉื‘ ืฉื›ื“ืื™ ืœืชืงืŸ ื•ื‘ืกื“ืจ ื”ื–ื”. ืื’ื‘ ืืœื” ื”ื“ื‘ืจื™ื ืฉื›ืŸ ืื”ื‘ืชื™ ื‘ืงื•ื“." ืชื‘ื•ืื• ืขื ื ืชื•ื ื™ื ื•ืชืชืจื’ืœื• ืœื”ืงืฉื™ื‘ ืœืื ืฉื™ื ืฉื‘ืื™ื ืขื ื ืชื•ื ื™ื. ื–ื” ืื•ืœื™ ืคื—ื•ืช ื›ื™ืฃ ืื‘ืœ ื”ืจื‘ื” ื™ื•ืชืจ ืคืจื•ื“ื•ืงื˜ื™ื‘ื™.

ToCode
1 420
[('restrictions', 2), ('updated', 2), ('*', 2), ('dick', 2), ('loomings', 2), ('postscript', 2), ('historically', 2), ('diminish?โ€”will', 2), ('aloft.โ€”thunder', 2), ('chase.โ€”third', 2), ('combination', 2), ('defunct', 2), ('indebted', 2), ('dusting', 2), ('grammars', 2), ('vaulted', 2), ('entertaining', 2), ('affording', 2), ('rosy', 2), ('sadness', 2), ('tuileries', 2), ('gulp', 2), ('hoary', 2), ('paunch', 2), ('biggest', 2), ('verbal', 2), ('gulf', 2), ('insomuch', 2), ('parmacetti', 2), ('boil', 2), ('quid', 2), ('pikes', 2), ('fry', 2), ('troops', 2), ('caution', 2), ('discoverer', 2), ('fence', 2), ('abode', 2), ('conceal', 2), ('boldness', 2), ('revenue', 2), ('momentary', 2), ('serves', 2), ('impetus', 2), ('enemies', 2), ('swords', 2), ('finny', 2), ('mightier', 2), ('flounders', 2), ('gateway', 2), ('monument', 2), ('sprout', 2), ('resounds', 2), ('rushes', 2), ('neglected', 2), ('opportunities', 2), ('witnessing', 2), ('formidable', 2), ('displays', 2), ('employ', 2), ('a.d.', 2), ('inevitable', 2), ('national', 2), ('rebounds', 2), ('totally', 2), ('ex', 2), ('arches', 2), ('entrances', 2), ('alcoves', 2), ('whites', 2), ('manage', 2), ('cheery', 2), ('giant', 2), ('regulating', 2), ('warehouses', 2), ('surrounds', 2), ('waterward', 2), ('battery', 2), ('cooled', 2), ('seaward', 2), ('pent', 2), ('benches', 2), ('extremest', 2), ('suffice', 2), ('caravan', 2), ('metaphysical', 2), ('employs', 2), ('hermit', 2), ('woodlands', 2), ('overlapping', 2), ('spurs', 2), ('bathed', 2), ('sighs', 2), ('shepherd', 2), ('wade', 2), ('lilies', 2), ('cataract', 2), ('poet', 2), ('pedestrian', 2), ('deity', 2), ('tormenting', 2), ('rag', 2), ('tribulations', 2), ('judiciously', 2), ('mummies', 2), ('grasshopper', 2), ('touches', 2), ('indignity', 2), ('orchard', 2), ('thieves', 2), ('entailed', 2), ('cheerfully', 2), ('wholesome', 2), ('leaders', 2), ('secretly', 2), ('magnificent', 2), ('tragedies', 2), ('delusion', 2), ('inducements', 2), ('gates', 2), ('inmost', 2), ('amazingly', 2), ('monopolising', 2), ('sally', 2), ('concernment', 2), ('grapnels', 2), ('expensive', 2), ('congealed', 2), ('tinkling', 2), ('building', 2), ('stumble', 2), ('porch', 2), ('dilapidated', 2), ('carted', 2), ('ruins', 2), ('cheap', 2), ('pea', 2), ('palsied', 2), ('judging', 2), ('writer', 2), ('lookest', 2), ('improvements', 2), ('copestone', 2), ('curbstone', 2), ('tatters', 2), ('drinks', 2), ('tepid', 2), ('frosted', 2), ('thoroughly', 2), ('diligent', 2), ('systematic', 2), ('contemplation', 2), ('oft', 2), ('unwarranted', 2), ('yeast', 2), ('sublimity', 2), ('deceptive', 2), ('combat', 2), ('hyperborean', 2), ('yielded', 2), ('aggregated', 2), ('opinions', 2), ('dismantled', 2), ('purposing', 2), ('sickle', 2), ('segment', 2), ('mown', 2), ('mower', 2), ('wondered', 2), ('imbedded', 2), ('decanters', 2), ('bottles', 2), ('withered', 2), ('dearly', 2), ('sells', 2), ('pours', 2), ('villanous', 2), ('cheating', 2), ('rudely', 2), ('surround', 2), ('skrimshander', 2), ('objections', 2), ('liked', 2), ('adjoining', 2), ('nightmare', 2), ('complexioned', 2), ('seed', 2), ('coats', 2), ('comforters', 2), ('icicles', 2), ('molasses', 2), ('sovereign', 2), ('capering', 2), ('interested', 2), ('ordained', 2), ('partner', 2), ('brawn', 2), ('reminiscences', 2), ('stature', 2), ('orgies', 2)]

ToCode
1 420
[('newsletter', 1), ('subscribe', 1), ('includes', 1), ('confirmed', 1), ('volunteer', 1), ('network', 1), ('originator', 1), ('checks', 1), ('addresses', 1), ('donation', 1), ('web', 1), ('treatment', 1), ('gratefully', 1), ('international', 1), ('donors', 1), ('accepting', 1), ('prohibition', 1), ('solicitation', 1), ('www.gutenberg.org/donate', 1), ('locations', 1), ('paperwork', 1), ('charities', 1), ('outdated', 1), ('widespread', 1), ('www.gutenberg.org/contact', 1), ('deductible', 1), ('identification', 1), ('corporation', 1), ('educational', 1), ('501(c)(3', 1), ('sections', 1), ('ensuring', 1), ('goals', 1), ('financial', 1), ('formats', 1), ('synonymous', 1), ('c', 1), ('deletions', 1), ('additions', 1), ('modification', 1), ('alteration', 1), ('employee', 1), ('indemnify', 1), ('provisions', 1), ('void', 1), ('unenforceability', 1), ('invalidity', 1), ('maximum', 1), ('violates', 1), ('types', 1), ('implied', 1), ('disclaimers', 1), ('elect', 1), ('distributor', 1), ('1.f.3', 1), ('warranty', 1), ('remedies', 1), ('disclaim', 1), ('codes', 1), ('virus', 1), ('disk', 1), ('infringement', 1), ('transcription', 1), ('data', 1), ('inaccurate', 1), ('defects', 1), ('stored', 1), ('proofread', 1), ('expend', 1), ('employees', 1), ('manager', 1), ('discontinue', 1), ('notifies', 1), ('periodic', 1), ('legally', 1), ('owed', 1), ('taxes', 1), ('%', 1), ('exporting', 1), ('hypertext', 1), ('processing', 1), ('proprietary', 1), ('nonproprietary', 1), ('compressed', 1), ('binary', 1), ('redistribute', 1), ('detach', 1), ('unlink', 1), ('redistributing', 1), ('indicating', 1), ('texts', 1), ('accessed', 1), ('1.e.', 1), ('representations', 1), ('downloading', 1), ('govern', 1), ('unprotected', 1), ('compilation', 1), ('1.e', 1), ('1.c', 1), ('indicate', 1), ('1.a.', 1), ('renamed', 1), ('orphan', 1), ('retracing', 1), ('sheathed', 1), ('padlocks', 1), ('dirgelike', 1), ('liberated', 1), ('ixion', 1), ('suction', 1), ('halfspent', 1), ('forth?โ€”because', 1), ('thrill', 1), ('etherial', 1), ('intercept', 1), ('incommoding', 1), ('tauntingly', 1), ('backwardly', 1), ('touched;โ€”at', 1), ('coincidings', 1), ('ironical', 1), ('intermixingly', 1), ('whelmings', 1), ('inanimate', 1), ('animate', 1), ('lookouts', 1), ('infatuation', 1), ('gaseous', 1), ('mediums', 1), ('bewildering', 1), ('bowstring', 1), ('mutes', 1), ('voicelessly', 1), ('grooves;โ€”ran', 1), ('grapple', 1), ('unconquering', 1), ('comber', 1), ('foregone', 1), ('prow,โ€”death', 1), ('bullied', 1), ('uncracked', 1), ('unsurrendered', 1), ('flume', 1), ('dislodged', 1), ('buttress', 1), ('predestinating', 1), ('inactive', 1), ('coppers', 1), ('though;โ€”cherries', 1), ('gulping', 1), ('assassins', 1), ('brushwood', 1), ('mattrass', 1), ('unwinking', 1), ('unappeasable', 1), ('fidelities', 1), ('plaid', 1), ('gap', 1), ('splashing', 1), ('persecutions', 1), ('evolution', 1), ('crashing', 1), ('cracks!โ€”โ€™tis', 1), ('sinew', 1), ('tug', 1), ('ungraduated', 1), ('unprepared', 1), ('foreknew', 1), ('writhed', 1), ('fiercer', 1), ('tellโ€โ€”he', 1), ('rowlocks', 1), ('pertinaciously', 1), ('abate', 1), ('busying', 1), ('staved', 1), ('judicious', 1), ('seekest', 1), ('again.โ€”aye', 1), ('breathโ€”โ€œaye', 1), ('befooled!โ€โ€”drawing', 1), ('befooled', 1), ('frayed', 1), ('flailed', 1), ('knitted', 1), ('tiers', 1), ('combinedly', 1), ('creamed', 1), ('brokenly', 1), ('swamping', 1), ('bedraggled', 1), ('berg', 1), ('upheaved', 1), ('ahab!โ€”shudder', 1), ('it!โ€”where', 1), ('soars', 1), ('vaneโ€โ€”pointing', 1), ('again!โ€”drive', 1), ('whale!โ€”ho', 1)]
ืจืฉื™ืžื” ืฉืœื™ืฉื™ืช - ื”ืžื™ืœื™ื ื”ื›ื™ ืคื—ื•ืช ื ืคื•ืฆื•ืช ืื‘ืœ ืฉืขื“ื™ื™ืŸ ืžื•ืคื™ืขื•ืช ื™ื•ืชืจ ืžืคืขื ืื—ืช:

ToCode
1 420
[('whale', 894), ('now', 781), ('ship', 515), ('more', 507), ('man', 504), ('old', 440), ('other', 432), ('sea', 431), ('โ€™s', 416), ('only', 378), ('head', 333), ('boat', 331), ('time', 329), ('long', 327), ('very', 322), ('here', 316), ('ye', 315), ('still', 311), ('great', 300), ('said', 296), ('most', 286), ('seemed', 279), ('last', 275), ('way', 269), ('chapter', 267), ('see', 265), ('again', 258), ('have', 256), ('yet', 247), ('whales', 246), ('little', 246), ('_', 243), ('men', 239), ('say', 233), ('round', 230), ('first', 225), ('much', 223), ('same', 213), ('such', 208), ('hand', 207), ('side', 206), ('never', 206), ('ever', 205), ('own', 205), ('good', 202), ('look', 200), ('almost', 196), ('even', 192), ('go', 192), ('deck', 188), ('thing', 187), ('water', 186), ('all', 185), ('as', 183), ('too', 182), ('made', 177), ('come', 177), ('away', 175), ('world', 174), ('white', 174), ('day', 171), ('thou', 170), ('life', 167), ('far', 165), ('seen', 164), ('do', 163), ('many', 161), ('well', 159), ('line', 158), ('let', 157), ('eyes', 156), ('had', 156), ('fish', 154), ('part', 153), ('sort', 152), ('cried', 150), ('thought', 148), ('know', 148), ('back', 147), ('once', 147), ('night', 147), ('boats', 145), ('so', 144), ('air', 140), ('crew', 137), ('whole', 136), ('full', 135), ('take', 134), ('thus', 134), ('things', 133), ('tell', 133), ('small', 130), ('soon', 129), ('feet', 127), ('hands', 125), ('came', 123), ('whaling', 122), ('mast', 121), ('has', 121), ('captain', 119), ('think', 118), ('half', 118), ('found', 117), ('just', 117), ('place', 117), ('called', 116), ('make', 114), ('saw', 112), ('times', 112), ('right', 110), ('body', 110), ('work', 110), ('poor', 108), ('high', 106), ('heard', 106), ('moment', 105), ('sight', 104), ('sperm', 104), ('end', 102), ('aye', 101), ('stand', 100), ('one', 100), ('sail', 98), ('strange', 98), ('hold', 98), ('years', 96), ('however', 95), ('face', 95), ('sun', 95), ('down', 94), ('voyage', 94), ('few', 94), ('went', 94), ('also', 93), ('dead', 93), ('get', 92), ('certain', 91), ('is', 90), ('oil', 90), ('going', 89), ('heart', 89), ('perhaps', 89), ('stood', 89), ('indeed', 89), ('give', 88), ('ships', 88), ('eye', 87), ('sometimes', 87), ('heads', 86), ('days', 86), ('seems', 86), ('like', 86), ('true', 85), ('matter', 85), ('arm', 85), ('iron', 85), ('hard', 84), ('set', 84), ('black', 83), ('soul', 82), ('death', 81), ('seem', 81), ('wild', 81), ('standing', 81), ('cabin', 81), ('known', 80), ('tail', 80), ('always', 80), ('present', 80), ('seas', 79), ('large', 79), ('mind', 79), ('young', 79), ('light', 79), ('length', 78), ('land', 78), ('instant', 77), ('least', 76), ('open', 76), ('harpooneer', 76), ('enough', 76), ('bed', 76), ('at', 76), ('fire', 75), ('mate', 75), ('harpoon', 75), ('leg', 75), ('word', 74), ('morning', 74), ('vast', 73), ('living', 73), ('board', 73), ('put', 73), ('did', 73), ('lay', 73), ('done', 73), ('often', 73), ('-', 72), ('point', 71), ('deep', 70)]
ืจืฉื™ืžื” ืฉื ื™ื” - ื”ืžื™ืœื™ื ื”ื›ื™ ืคื—ื•ืช ื ืคื•ืฆื•ืช ื‘ืกืคืจ ืžื•ื‘ื™ ื“ื™ืง:

ToCode
1 420
def count_words(text: str):
    nlp = spacy.load("en_core_web_sm")
    word_count = Counter()
    for chunk in chunks(text, 100_000):
        doc = nlp(chunk)
        word_tags = {'ADV', 'VERB', 'NOUN', 'ADJ'}
        weird_tokens = {"'s", "so", "then", "there"}
        word_count.update([w.text.lower()
                           for w in doc
                           if (w.pos_ in word_tags) and (w.text not in weird_tokens)])

    return word_count


if __name__ == "__main__":
    ctx = ssl.create_default_context()
    ctx.check_hostname = False
    ctx.verify_mode = ssl.CERT_NONE

    with urllib.request.urlopen("https://www.gutenberg.org/cache/epub/2701/pg2701.txt",
                                context=ctx) as f:
        text = f.read().decode('utf8')
        word_count = count_words(text)
        print(f"Book has {len(word_count)} words")

        print("--- most common 200 words:")
        print(word_count.most_common(200))

        print("--- least common 200 words:")
        print(word_count.most_common()[:-201:-1])

        print("--- least common 200 words that appear more than once:")
        word_count_greater_than_1 = sorted({k: v for k, v in word_count.items() if v > 1}.items(),
                                           key=lambda x: x[1])

        print(word_count_greater_than_1[:200])
ืชื•ืฆืื•ืช? ื‘ื˜ื—. ืจืฉื™ืžื” ืจืืฉื•ื ื” - ื”ืžื™ืœื™ื ื”ื›ื™ ื ืคื•ืฆื•ืช ื‘ืกืคืจ ืžื•ื‘ื™ ื“ื™ืง:

ToCode
1 420
ืžื” ื”ืžื™ืœื” ืฉืžื•ืคื™ืขื” ื”ื›ื™ ื”ืจื‘ื” ืคืขืžื™ื ื‘ืžื•ื‘ื™ ื“ื™ืง? ืœื ืฆืจื™ืš ื™ื•ืชืจ ืžื›ืžื” ืฉื•ืจื•ืช ืคื™ื™ืชื•ืŸ ื•ืกืคืจ ื—ื•ืคืฉื™ ืื• ืฉื ื™ื™ื ื›ื“ื™ ืœืžืฆื•ื ืžื™ืœื™ื ืžืขื ื™ื™ื ื•ืช ื‘ืื ื’ืœื™ืช. ื‘ืžืงืจื” ืฉืœ ืžื•ื‘ื™ ื“ื™ืง ื”ื—ื™ื™ื ืงืœื™ื ื›ื™ ื”ืกืคืจ ืœืœื ื–ื›ื•ื™ื•ืช ื™ื•ืฆืจื™ื ื•ืืคืฉืจ ืœืžืฆื•ื ืืช ื›ืœ ื”ื˜ืงืกื˜ ื”ืžืงื•ืจื™ ื‘ืคืจื•ื™ืงื˜ ื’ื•ื˜ื ื‘ืจื’ ื‘ืงื™ืฉื•ืจ: https://www.gutenberg.org/cache/epub/2701/pg2701.txt ืขื›ืฉื™ื• ื‘ื•ืื• ื ืœืš ืœืงืจื•ื ืื•ืชื•, ืื‘ืœ ื‘ื”ื™ืœื•ืš ืžื”ื™ืจ. ืื™ืš ืœืฉื‘ื•ืจ ื˜ืงืกื˜ ืœืžื™ืœื™ื ืฉืœื‘ ื—ืฉื•ื‘ ืจืืฉื•ืŸ ื‘ืฉื‘ื™ืœ ืœืžืฆื•ื ืžื™ืœื™ื ืžืขื ื™ื™ื ื•ืช ื‘ื˜ืงืกื˜ ื™ื”ื™ื” ืœืฉื‘ื•ืจ ืืช ื”ื˜ืงืกื˜ ืœืžื™ืœื™ื. ืื ื™ ื™ื•ื“ืข ืฉืืชื ื—ื•ืฉื‘ื™ื ืขืœ ืื™ื–ื” split ืื‘ืœ ืขื ืžื™ืœื™ื ื–ื” ื˜ื™ืคื” ื™ื•ืชืจ ืžืกื•ื‘ืš - ืื™ืŸ ืœื™ ืžื” ืœืขืฉื•ืช ืขื ืฉืžื•ืช ืฉืœ ืื ืฉื™ื ืื• ืžืงื•ืžื•ืช, ื•ื‘ืื•ืคืŸ ื›ืœืœื™ ืžื™ืœื™ื ืžืขื ื™ื™ื ื•ืช ื™ื”ื™ื• ื‘ื“ืจืš ื›ืœืœ ืคืขืœื™ื, ืฉืžื•ืช ืขืฆื ืื• ืชืืจื™ื. ืื ื™ ื’ื ืœื ืจื•ืฆื” ืกื™ืžื ื™ ืคื™ืกื•ืง ืฉื™ืคืจื™ืขื• ืœื—ื™ืคื•ืฉ. ืื– ื›ืŸ ืืคืฉืจ ืœืžื—ื•ืง ืชื•ื•ื™ื ืžื™ื•ืชืจื™ื ืื‘ืœ ื™ื•ืชืจ ืงืœ ืœืชืช ืœืžื—ืฉื‘ ืœืขืฉื•ืช ืืช ื–ื”. ืกืคืจื™ื™ืช spacy ื™ื•ื“ืขืช ืœื—ืœืง ื˜ืงืกื˜ ืœื˜ื•ืงื ื™ื (ื›ืœื•ืžืจ ืžื™ืœื™ื ืื• ืกื™ืžื ื™ ืคื™ืกื•ืง), ื•ื’ื ืœื”ื’ื™ื“ ืžื” ื”ืชืคืงื™ื“ ืฉืœ ื›ืœ ื˜ื•ืงืŸ ื‘ื˜ืงืกื˜. ื”ืงื•ื“ ื”ื–ื” ืœื“ื•ื’ืžื” ื™ื™ืงื— ืžืฉืคื˜ ื•ื™ื“ืคื™ืก ืืช ื›ืœ ื”ื˜ื•ืงื ื™ื ื•ื”ืชืคืงื™ื“ ืฉืœ ื›ืœ ื˜ื•ืงืŸ ื‘ืžืฉืคื˜:
import spacy

nlp = spacy.load("en_core_web_trf")
doc = nlp("This is such a long sentence that I cannot read it so go on please.")

print([(w.text, w.pos_) for w in doc])
ื•ื”ืคืœื˜:
[('This', 'PRON'), ('is', 'AUX'), ('such', 'DET'), ('a', 'DET'), ('long', 'ADJ'), ('sentence', 'NOUN'), ('that', 'SCONJ'), ('I', 'PRON'), ('can', 'AUX'), ('not', 'PART'), (
'read', 'VERB'), ('it', 'PRON'), ('so', 'CCONJ'), ('go', 'VERB'), ('on', 'ADP'), ('please', 'INTJ'), ('.', 'PUNCT')]
ืขื›ืฉื™ื• ืฉื™ืฉ ืœื™ ืืช ื—ืœืงื™ ื”ื“ื™ื‘ื•ืจ ืืคืฉืจ ืœืกื ืŸ ื•ืœื”ื“ืคื™ืก ืจืง ืืช ื”ืžื™ืœื™ื ื”ืžืขื ื™ื™ื ื•ืช - ื›ืœื•ืžืจ ื”ืคืขืœื™ื, ื”ืชืืจื™ื ื•ืฉืžื•ืช ื”ืขืฆื. ื‘ืขื™ื” 1 - ืžืื™ืคื” ืžืฉื™ื’ื™ื ืืช ื”ื˜ืงืกื˜ ื”ื˜ืงืกื˜ ืฉืœ ืžื•ื‘ื™ ื“ื™ืง ื–ืžื™ืŸ ืื•ื ืœื™ื™ืŸ ื•ืœื›ืŸ ื‘ืฉื‘ื™ืœ ืœืงื‘ืœ ืื•ืชื• ืื ื™ ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ืงื•ื“ ืคื™ื™ืชื•ืŸ ื”ื‘ื:
import urllib.request
import ssl

if __name__ == "__main__":
    ctx = ssl.create_default_context()
    ctx.check_hostname = False
    ctx.verify_mode = ssl.CERT_NONE

    with urllib.request.urlopen("https://www.gutenberg.org/cache/epub/2701/pg2701.txt",
                                context=ctx) as f:
        text = f.read().decode('utf8')
        print(len(text))
ื‘ืงื•ื“ ืฉืœื™ ื”ืชืขืœืžืชื™ ืžื‘ืขื™ื•ืช ื‘ SSL. ืื ื™ ื—ื•ืฉื‘ ืฉื”ื‘ืขื™ื•ืช ื ื’ืจืžื• ื‘ื’ืœืœ ื‘ืขื™ื™ืช ื”ืชืงื ื” ืื• ืงื‘ืฆื™ื ื—ืกืจื™ื ืืฆืœื™ ืขืœ ื”ืžื—ืฉื‘, ืื‘ืœ ื‘ื›ืœ ืžืงืจื” ืœืชื•ื›ื ื™ืช ื”ื“ื•ื’ืžื” ืฉืœ ืžื•ื‘ื™ ื“ื™ืง ื–ื” ืœื ื”ื™ื” ื—ืฉื•ื‘. ื‘ืขื™ื” 2 - ื”ื˜ืงืกื˜ ืืจื•ืš ืžื“ื™ ื ื™ืกื™ื•ืŸ ืœื—ื‘ืจ ื‘ื™ืŸ ืฉืชื™ ืชื•ื›ื ื™ื•ืช ื”ื“ื•ื’ืžื” ื ื›ืฉืœ ื‘ื’ืœืœ ืฉื”ื˜ืงืกื˜ ืฉืœ ืžื•ื‘ื™ ื“ื™ืง ืืจื•ืš ืžื“ื™. ืœื›ืŸ ื”ื•ืกืคืชื™ ืขื•ื“ ืคื•ื ืงืฆื™ื” ืฉืฉื•ื‘ืจืช ื˜ืงืกื˜ ืืจื•ืš ืœืงื˜ืขื™ื ืงื˜ื ื™ื ื™ื•ืชืจ, ื‘ืœื™ ืœืฉื‘ื•ืจ ืžื™ืœื™ื ื‘ืืžืฆืข:
def chunks(text: str, max_size: int):
    while len(text) > max_size:
        space_index = text[:max_size].rfind(' ')
        yield text[:space_index]
        text = text[space_index:]
        print(f"{len(text)} chars left")
    yield text
ืขื›ืฉื™ื• ืื ื—ื ื• ืžื•ื›ื ื™ื ืœืกืคื•ืจ ืืช ื”ืžื™ืœื™ื:
def count_words(text: str):
    nlp = spacy.load("en_core_web_trf")
    word_count = Counter()
    for chunk in chunks(text, 100_000):
        doc = nlp(chunk)
        word_tags = {'ADV', 'VERB', 'NOUN', 'ADJ'}
        weird_tokens = {"'s", "so", "then", "there"}
        word_count.update([w.text.lower()
                           for w in doc
                           if (w.pos_ in word_tags) and (w.text not in weird_tokens)])

    return word_count
ื”ืชื•ื›ื ื™ืช ื”ืžืœืื” ื•ืจืฉื™ืžื•ืช ืžื™ืœื™ื ืžืขื ื™ื™ื ื•ืช ืื– ืื™ื–ื” ืžื™ืœื™ื ื™ืฉ ื‘ืžื•ื‘ื™ ื“ื™ืง? ืื ื™ ืจืฆื™ืชื™ ืœืžืฆื•ื 3 ืจืฉื™ืžื•ืช. ื”ืจืฉื™ืžื” ื”ืจืืฉื•ื ื” ื”ื™ื ืฉืœ ื”ืžื™ืœื™ื ื”ื›ื™ ื ืคื•ืฆื•ืช. ื”ืžื™ืœื” ื”ื›ื™ ื ืคื•ืฆื” ื‘ืกืคืจ ืœืžืงืจื” ืฉืชื”ื™ืชื ื”ื™ื ื›ืžื•ื‘ืŸ ืœื•ื•ื™ืชืŸ. ืื‘ืœ ื™ืฉ ืขื•ื“ ื›ืžื” ืžื™ืœื™ื ื ืคื•ืฆื•ืช ืฉืื ื—ื ื• ื›ื ืจืื” ืžื›ื™ืจื™ื. ื”ืจืฉื™ืžื” ื”ืฉื ื™ื” ื”ื™ืชื” ืฉืœ ื”ืžื™ืœื™ื ื”ื›ื™ ืคื—ื•ืช ื ืคื•ืฆื•ืช ื‘ืกืคืจ, ื•ื”ืจืฉื™ืžื” ื”ืฉืœื™ืฉื™ืช ืฉื ืจืืชื” ืœื™ ื”ื›ื™ ืžืขื ื™ื™ื ืช ื”ื™ืชื” ืฉืœ ื” 200 ืžื™ืœื™ื ื”ื›ื™ ืคื—ื•ืช ื ืคื•ืฆื•ืช ืื‘ืœ ืฉื”ื•ืคื™ืขื• ื™ื•ืชืจ ืžืคืขื ืื—ืช. ืกืš ื”ื›ืœ ื–ืืช ื”ื™ืชื” ื›ืœ ื”ืชื•ื›ื ื™ืช:
import spacy
from collections import Counter
import urllib.request
import ssl

def chunks(text: str, max_size: int):
    while len(text) > max_size:
        space_index = text[:max_size].rfind(' ')
        yield text[:space_index]
        text = text[space_index:]
        print(f"{len(text)} chars left")
    yield text

ToCode
1 420
ืžื” ืฉืขืฉื™ื ื• ืคืขื ืงื•ื“ืžืช ืื—ืช ื”ื”ื˜ื™ื•ืช ืฉืงืฉื” ืœื”ืชื’ื‘ืจ ืขืœื™ื”ืŸ ื”ื™ื ื”ื˜ื™ื™ืช ื”"ืคืขื ืงื•ื“ืžืช ืขืฉื™ื ื• ืืช ื–ื”". ื‘ืžื™ื•ื—ื“ ืื ืคืขื ืงื•ื“ืžืช ื”ื’ืขื ื• ืœืชื•ืฆืื” ืกื‘ื™ืจื”. ื”ื™ืชืจื•ืŸ ื”ื’ื“ื•ืœ ื‘ืœื‘ื—ื•ืจ ื‘ืคื™ืชืจื•ืŸ ืฉื‘ื—ืจื ื• ื‘ื• ืคืขื ืงื•ื“ืžืช ื”ื•ื ืฉื–ื” ื—ื•ืกืš ืžื—ืฉื‘ื”. ืฆืจื™ื›ื™ื ื“ืฃ ื ื—ื™ืชื”? ื™ืฉ ืœื™ ื‘ื—ื•ืจ ืฉืขื•ืฉื” ื“ืคื™ ื ื—ื™ืชื” ื•ืคืขื ืงื•ื“ืžืช ื”ื•ื ืขืฉื” ืœื™ ื“ืฃ ืžืฆื•ื™ืŸ. ืžืชืœื‘ื˜ื™ื ื‘ื™ืŸ React ืœ Vue? ืคืขื ืงื•ื“ืžืช ื‘ื—ืจื ื• ืจื™ืืงื˜ ื•ื–ื” ืขื‘ื“ ืžืฆื•ื™ืŸ. ืœื ืฆืจื™ืš ืœื—ืฉื•ื‘ ืคืขื ืฉื ื™ื” ืขืœ ืžืฉื”ื• ืฉื›ื‘ืจ ื—ืฉื‘ื ื• ืขืœื™ื•. ืื‘ืœ ืื ื™ ืœื ื‘ื˜ื•ื— ืฉื–ื” ื›ืœ ื›ืš ืคืฉื•ื˜. ื”ื ื” ืขื•ื“ ื›ืžื” ื ืงื•ื“ื•ืช ืœืžื—ืฉื‘ื”: 1. ืื•ืœื™ ืคืขื ืงื•ื“ืžืช ื”ืชื•ืฆืื” ื”ื™ืชื” ืกื‘ื™ืจื” ืื‘ืœ ื”ื™ืชื” ื™ื›ื•ืœื” ืœื”ื™ื•ืช ื”ืจื‘ื” ื™ื•ืชืจ ื˜ื•ื‘ื” ืขื ื”ืืœื˜ืจื ื˜ื™ื‘ื”. 2. ืื•ืœื™ ื“ื‘ืจื™ื ื”ืฉืชื ื• ืžืื– ื”ืคืขื ื”ืงื•ื“ืžืช ืœื”ื™ื•ื. ืื•ืœื™ ื™ืฉ ื›ืœื™ื ื™ื•ืชืจ ื˜ื•ื‘ื™ื ืฉืคืขื ืงื•ื“ืžืช ืœื ื”ื™ื•. 3. ืื•ืœื™ ืืชื ื”ืฉืชื ื™ืชื ืžืื– ื”ืคืขื ื”ืงื•ื“ืžืช. ืื•ืœื™ ืžื” ืฉืขื‘ื“ ื‘ืฉื‘ื™ืœื›ื ืื– ื›ื‘ืจ ืœื ื™ืขื‘ื•ื“ ื”ื™ื•ื. ืื•ืœื™ ื—ืœืง ืžื”ืื™ืœื•ืฆื™ื ืฉื”ื™ื• ืœื›ื ืื– ื›ื‘ืจ ืœื ืงื™ื™ืžื™ื ื•ื‘ืœืขื“ื™ื”ื ืืคืฉืจ ืœืžืฆื•ื ืคื™ืชืจื•ืŸ ื˜ื•ื‘ ื™ื•ืชืจ. ื›ืฉืื ื—ื ื• ืžื•ื›ื ื™ื ืœื‘ื—ื•ืŸ ืžื—ื“ืฉ ื”ื—ืœื˜ื•ืช ืฉืขืฉื™ื ื• ืื ื—ื ื• ืžืคืจื™ื“ื™ื ืืช ืขืฆืžื ื• ืžื”ื”ื—ืœื˜ื”. ืื ื™ ื›ื‘ืจ ืœื "ืžืชื›ื ืช ืจื™ืืงื˜" ืื• "ืžืชื›ื ืชืช Java". ืื ื™ ืคื” ื‘ืฉื‘ื™ืœ ืœืคืชื•ืจ ื‘ืขื™ื•ืช ื•ืื ื™ ืืฉืžื— ืœื‘ื—ื•ืจ ืืช ื”ื“ืจืš ื”ื˜ื•ื‘ื” ื‘ื™ื•ืชืจ ืœืคืชื•ืจ ืืช ื”ื‘ืขื™ื” ื”ื‘ืื”.

ToCode
1 420
ื›ืŸ, ื‘ืืžืช ืžืฉืชืžืฉื™ื ื‘ื–ื” ื”ืฉืืœื” ื”ื–ืืช ื—ื•ื–ืจืช ื›ืœ ืคืขื ืฉืžื’ื™ืขื™ื ืœื ื•ืฉื ืžื•ื–ืจ ื‘ืงื•ืจืก "ืžื”, ืžื™ืฉื”ื• ื‘ืืžืช ืžืฉืชืžืฉ ื‘ื–ื”?", ื•-"ืœืžื” ืื ื—ื ื• ืฆืจื™ื›ื™ื ืœื”ื›ื™ืจ ืืช ื–ื”?" ื•ืืคื™ืœื• "ืžื™ ืฉื›ื•ืชื‘ ื›ื›ื” ืฆืจื™ืš ืœืžืฆื•ื ืขื‘ื•ื“ื” ืื—ืจืช, ืืฆืœื ื• ื›ื•ืชื‘ื™ื ืงื•ื“ ืงืœ". ื•ื›ื›ื” ืชื•ืš ื›ื“ื™ ื—ื™ืคื•ืฉ ื‘ืื’ ืœื ืงืฉื•ืจ ื ืชืงืœืชื™ ื‘ื”ื’ื“ืจื” ื”ื‘ืื” ื‘ื˜ื™ื™ืคืกืงืจื™ืคื˜. ืœื ืืฆืœื™ ื‘ืงื•ื“ ื•ืœื ื‘ืื™ื–ื” ืคืจื•ื™ืงื˜ ืฆื“, ืืœื ืžืžืฉ ื‘ืชื•ืš ื”ืงื•ื“ ืฉืœ TypeORM. ื–ื” ื ืจืื” ื›ื›ื”-
type DeepPartial<T> = T | 
(T extends Array<infer U> 
    ? DeepPartial<U>[] 
    : T extends Map<infer K, infer V> 
        ? Map<DeepPartial<K>, DeepPartial<V>>
        : T extends Set<infer M>
            ? Set<DeepPartial<M>>
            : T extends object ? {
                [K in keyof T]?: DeepPartial<T[K]>;
            } : T);
ื™ืฉ ืคื” ื”ื›ืœ: ื˜ื™ืคื•ืกื™ื ื’ื ืจื™ื™ื, ืžื™ืคื•ื™ ืื•ื‘ื™ืงื˜ื™ื, ื˜ื™ืคื•ืกื™ื ืจืงื•ืจืกื™ื‘ื™ื™ื. ื›ืœ ื”ื“ื‘ืจื™ื ืฉื›ืฉืื ื™ ืจืง ืžืชื—ื™ืœ ืœื“ื‘ืจ ืขืœื™ื”ื ื‘ื›ื™ืชื•ืช ื›ื•ืœื ื ื–ื›ืจื™ื ืฉื™ืฉ ืœื”ื ืžืฉื”ื• ืื—ืจ ืœืขืฉื•ืช. ื‘ื•ืื• ื ืงืจื ืืช ื”ื”ื’ื“ืจื” ื™ื—ื“- 1. ืžื’ื“ื™ืจื™ื ื˜ื™ืคื•ืก ื—ื“ืฉ ื‘ืฉื DeepPartial ืฉื”ื•ื ื˜ื™ืคื•ืก ื’ื ืจื™. ื”ื•ื ื™ื›ื•ืœ ืœืงื‘ืœ ื›ืœ ื˜ื™ืคื•ืก ื˜ื™ื™ืคืกืงืจื™ืคื˜ ืงื™ื™ื ื‘ืชื•ืจ ื‘ืกื™ืก. 2. ืชื—ื™ืœื” ื‘ื•ื“ืงื™ื, ื”ืื T ื”ื•ื ืžืขืจืš ืฉืœ ืžืฉื”ื•. ืื ื›ืŸ ืื– ื”ื˜ื™ืคื•ืก ืฉืœื ื• ื”ื•ื ืคืฉื•ื˜ ืžืขืจืš ืฉืœ DeepPartial ืขืœ ื”ื˜ื™ืคื•ืก ืฉืœ ื›ืœ ืชื ื‘ืžืขืจืš. 3. ืœื ืžืขืจืš? ื™ื•ืคื™, ืื•ืœื™ ื”ื•ื ืžืคื”. ืื ื–ื” ืžืคื” ืื– ื”ื˜ื™ืคื•ืก ืฉืœื ื• ื”ื•ื ืžืคื” ืฉื”ืžืคืชื— ื”ื•ื DeepPartial ืฉืœ ื˜ื™ืคื•ืก ื”ืžืคืชื— ื•ื”ืขืจืš ื”ื•ื ืžืกื•ื’ DeepPartial ืฉืœ ืžื” ืฉื”ื™ื” ื˜ื™ืคื•ืก ื”ืขืจืš. ืงืฆืช ื›ืžื• ืขื ืžืขืจื›ื™ื. 4. ื’ื ืœื ืžืคื”? ืœื ืœื”ื™ื‘ื”ืœ ืื•ืœื™ ื–ื” Set. ืื ื›ืŸ ืื– ื‘ืขืฆื ืื ื—ื ื• ืฆืจื™ื›ื™ื ืกื˜ ืžื˜ื™ืคื•ืก DeepPartial ืฉืœ ื”ืคืจื™ื˜ื™ื ื‘ T. 5. ืœื ืกื˜? ืื•ืœื™ ื–ื” ืื•ื‘ื™ืงื˜. ืื•ื‘ื™ืงื˜ ื–ื” ืžืฉื”ื• ืฉื™ืฉ ืœื• ืžืคืชื—ื•ืช ื•ืขืจื›ื™ื ื•ืœื›ืŸ Partial ืฉืœื• ื”ื•ื ืคืฉื•ื˜ ืื•ืกืฃ ืฉืœ ืื•ืชื ืžืคืชื—ื•ืช ืื‘ืœ ืขื ืกื™ืžืŸ ืฉืืœื” (ื›ืœื•ืžืจ ืื•ืคืฆื™ื•ื ืืœื™ื™ื), ื•ื›ืœ ืื—ื“ ืžื”ื ืžืงื‘ืœ ื‘ืชื•ืจ ื˜ื™ืคื•ืก ืฉืœ ื”ืขืจืš ืืช ื” DeepPartial ืฉืœ ื”ืขืจืš ืฉื”ื™ื” ืœื•. 6. ืœื ืื•ื‘ื™ืงื˜? ื˜ื•ื‘ ืื– ื ืฉืืจื™ื ืขื T ื›ื™ ื–ื” ื‘ื˜ื— ืžืฉืชื ื” ืคืฉื•ื˜. ื‘ืขื‘ืจื™ืช ื”ื˜ื™ืคื•ืก ื”ื–ื” ื”ื•ื ืฉื™ื“ืจื•ื’ ืฉืœ Partial ื”ืจื’ื™ืœ ืฉืœ ื˜ื™ื™ืคืกืงืจื™ืคื˜. ื‘ืขื•ื“ ืฉ Partial ื”ื•ืคืš ืืช ื›ืœ ื”ืžืคืชื—ื•ืช ืฉืœ ืื•ื‘ื™ืงื˜ ืœืื•ืคืฆื™ื•ื ืืœื™ื™ื ื‘ืฆื•ืจื” ืจื“ื•ื“ื”, ื” DeepPartial ื”ื•ืคืš ืืช ื›ื•ืœื ืœืื•ืคืฆื™ื•ื ืืœื™ื™ื ื‘ืฆื•ืจื” ืžืงื•ื ื ืช. ื›ืฉื—ื•ืฉื‘ื™ื ืขืœ ื–ื” ื”ื•ื ืืคื™ืœื• ืœื ื ืฉืžืข ื›ืœ ื›ืš ืžื™ื•ืชืจ ืื• ืžืกื•ื‘ืš. ืคืฉื•ื˜ ื“ื•ืจืฉ ื”ื™ื›ืจื•ืช ืขื ืื•ืชื ืžื‘ื ื™ื ืฉืœืจื•ื‘ ืื ื—ื ื• ืื•ื”ื‘ื™ื ืœื˜ืื˜ื ืžืชื—ืช ืœืฉื˜ื™ื—.

ToCode
1 420
ื”ื‘ื—ื™ืจื” ื”ื™ื ืœื ื‘ื™ืŸ ื”ืฆืœื—ื” ืœื›ื™ืฉืœื•ืŸ ื™ื•ื ืื—ื“ ื™ืฉื‘ืชื™ ืœื—ืงื•ืจ ืชืขืœื•ืžื” ืฉื ืจืืชื” ืžืžืฉ ืคืฉื•ื˜ื”, ื•ื‘ืืžืช ืื—ืจื™ ืจื‘ืข ืฉืขื” ืžืฆืืชื™ ืžื” ื”ื™ื” ืฉื‘ื•ืจ ื‘ืงื•ื“ ื•ืืคื™ืœื• ืœืžื“ืชื™ ืžืฉื”ื• ื—ื“ืฉ ืขืœ ืื™ืš ื”ืžืขืจื›ืช ืขื•ื‘ื“ืช. ื•ื™ื•ื ืื—ืจ ื™ืฉื‘ืชื™ ืœื—ืงื•ืจ ืชืขืœื•ืžื” ืฉื ืจืืชื” ืžืžืฉ ืคืฉื•ื˜ื”, ืื‘ืœ ื”ืคืขื ืื—ืจื™ ื™ื•ื ืฉืœื ืœื ื”ื™ื” ืœื™ ืงืฆื” ื—ื•ื˜. ื›ืœ ื›ื™ื•ื•ืŸ ืฉื ื™ืกื™ืชื™ ื”ื’ื™ืข ืœื“ืจืš ืœืœื ืžื•ืฆื ื•ื‘ืกื•ืฃ ื”ื™ื•ื ื”ืชืงืœื” ืจืง ื ืจืืชื” ื”ืจื‘ื” ื™ื•ืชืจ ื—ืžื•ืจื” ืžืžื” ืฉื”ื™ืชื” ื‘ื‘ื•ืงืจ. ื™ื•ืชืจ ื’ืจื•ืข ืžื–ื” ื”ื™ืชื” ืชื—ื•ืฉืช ื”ื”ื—ืžืฆื” - ืขืœ ืžื” ื‘ื–ื‘ื–ืชื™ ืืช ื”ื™ื•ื? ื”ืชืงืœื” ืœืขื•ืœื ืœื ืชื™ืคืชืจ ื•ื’ื ืืช ื”ืฉืขื•ืช ืืฃ ืื—ื“ ืœื ื™ื—ื–ื™ืจ ืœื™. ื”ื™ื™ืชื™ ืจื•ืฆื” ืœื”ื™ื•ืช ืžืกื•ื’ืœ ืœื‘ื—ื•ืจ ืจืง ื‘ื”ืฆืœื—ื•ืช, ืœื”ืกื›ื™ื ืœื—ืงื•ืจ ืจืง ืืช ื”ืชืขืœื•ืžื•ืช ืฉื™ืœืžื“ื• ืื•ืชื™ ืžืฉื”ื• ื—ื“ืฉ ื•ืฉืœื ื™ืงื—ื• ื™ื•ืชืจ ืžื“ื™ ื–ืžืŸ. ื”ื™ื™ืชื™ ืจื•ืฆื” ืœืกืคืจ ืœื›ื ืฉื™ืฉ ื˜ืจื™ืง ืฉืžืืคืฉืจ ืœื–ื”ื•ืช ืืช ื”ื“ื‘ืจื™ื ื”ืืœื” ืžืจืืฉ. ืื‘ืœ ื”ืืžืช ืฉืื ื™ืฉ ืื—ื“ ื›ื–ื” ืื ื™ ืขื•ื“ ืœื ืžืฆืืชื™ ืื•ืชื•. ื‘ืžืฆื™ืื•ืช ืฉืื ื™ ืžื›ื™ืจ, ื”ื‘ื—ื™ืจื” ื”ื™ื ืœื ื‘ื™ืŸ ื”ืฆืœื—ื” ืœื›ื™ืฉืœื•ืŸ ืืœื ื‘ื™ืŸ ื ื™ืกื™ื•ืŸ ืœื•ื•ื™ืชื•ืจ. ื‘ื™ืŸ ื”ืžืืžืฅ ืœืœืžื•ื“ ืžืฉื”ื• ื—ื“ืฉ ื•ืœืคืชื•ืจ ื‘ืขื™ื™ื” ืฉืื ื™ ืขื“ื™ื™ืŸ ืœื ื™ื•ื“ืข ืื™ืš ืชื™ื’ืžืจ ืœื‘ื™ืŸ ื”ื™ืฆืžื“ื•ืช ืœื‘ืขื™ื•ืช ื”ืžื•ื›ืจื•ืช ื•ื ื™ืฆื•ืœ ืžืงืกื™ืžืœื™ ืฉืœ ื”ื–ืžืŸ ื›ื“ื™ ืœื™ืฆื•ืจ ืขืจืš. ื–ืืช ืœื ื‘ื—ื™ืจื” ืงืœื”, ื•ืœื ื—ื™ื™ื‘ื™ื ืœื‘ื—ื•ืจ ืืช ืื•ืชื• ื“ื‘ืจ ื‘ื›ืœ ื”ืชื—ื•ืžื™ื ื‘ื—ื™ื™ื. ืื‘ืœ ื”ื‘ื ืช ื”ื‘ื—ื™ืจื” ืขื•ื–ืจืช ืœืงื‘ืœ ื™ื•ืชืจ ื‘ื”ื‘ื ื” ืืช ื”ื›ื™ืฉืœื•ื ื•ืช ืฉื’ื ื™ื’ื™ืขื•. ื”ื‘ื—ื™ืจื” ื”ื™ื ืœื ื‘ื™ืŸ ื”ืฆืœื—ื” ืœื›ื™ืฉืœื•ืŸ ืืœื ื‘ื™ืŸ ืœื ืกื•ืช ืœืœื ืœื ืกื•ืช. ื”ืชื•ืฆืื” ื”ื™ื ืžื—ื•ืฅ ืœืกืงื•ืค.