Блоґ одного кібера

Історія хвороби контуженого інформаційним вибухом

Програмістські експерименти

leave a comment »

За що я люблю програмування – так це за те що на відміну від, якої небудь історії, на будь-яке питання можна знайти відповідь в ході експерименту, без будь-яких “авторитетних джерел”.

– Чи копіюється map-а, при присвоєнні?
– Хвилину.

package main

import "fmt"

func main() {
fmt.Println("- Чи копіюється map-а, при присвоєнні?")
a := make(map[string]string)
a["answer"] = "Так"
b := a
b["answer"] = "Ні"
fmt.Println("-", a["answer"])
}

– Ні

Якщо звісно не запитання “нам обрати технологію А чи Б?” І звісно ресурсу на те щоб реалізувати рішення в обох і порівняти нема. Тоді й з’являються релігійні суперечки про те в кого мова потужніша.

Advertisements

Written by bunyk

Квітень 13, 2018 at 17:44

Оприлюднено в Кодерство, Нещоденник

Tagged with

Як склеїти всі pdf-файли в один?

leave a comment »

Сьогодні дізнався команду яка допоможе коли наприклад дружина прислала тобі 5 сканів в файлах pdf, мережеве з’єднання до принтера не працює, принтер вміє друкувати файли з флешки, але вибираючи кожен файл поокремо в меню принтера можна стерти пальці, і хочеться спростити собі життя. Знайшов на AskUbuntu:

gs -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=all.pdf *

Плюси (для мене) цієї команди порівняно з іншими варіантами:

  • Виявилася вже встановлена на Ubuntu
  • gs (GhostScript) – це інтерпретатор екзотичної тюрінг-повної мови програмування PostScript, яка є чимось середнім між TeX та Forth. Завжди корисно як не вивчити нову мову то хоча б її штрикнути одним пальцем.
  • Автором цієї утиліти є чувак про якого я колись читав книжку і не одну.

Written by bunyk

Квітень 4, 2018 at 18:46

Оприлюднено в Кодерство, Розмітка

Символи вікіпедії, детальніший аналіз

leave a comment »

Щодо моєї попередньої публікації, мені зауважили що є різні простори імен. Тому сьогодні буде аналіз лише тих символів які можна зустріти в статтях (а не в категоріях, шаблонах, на сторінках користувачів і проектів), розбивка по різних алфавітах (може кому треба буде для частотного аналізу).

Загалом статті складаються з 3 613 435 448 символів, з яких різних 23 717. Вони розподілені так (намальовано лише початок розподілу, бо решта – неозрброєним оком не видно):


Прочитати решту цього запису »

Written by bunyk

Березень 18, 2018 at 19:05

Оприлюднено в Кодерство, Розмітка

Tagged with ,

Скільки символів потрібно щоб написати вікіпедію?

with 3 comments

Не так важливо скільки там людей говоритиме українською коли настане технологічна сингулярність. Важлива сумарна обчислювальна потужність інтелекту що володіє українською. 😉 І взагалі варто опановувати хоч якісь основи навчання машин – це професія в якій роботи ще не скоро замінять людей. Щоб навчити машину мови – їй треба багааатезно прикладів. І найбільший шмат української мови який можна легко згодувати машині – вікіпедія. Тому сьогодні ми спробуємо з’ясувати що потрібно щоб отримати цей масив тексту, і порахувати на ньому якусь простеньку статистику, для якої не треба бази даних а вистачить оперативної пам’яті.

Перше що нам потрібно – копія бази даних вікіпедії. Тому що вікіпедія містить більше чверті мільйона статтей, і навіть якщо ми робитимемо по запиту на секунду, що вікіпедія не схвалює для всяких там приватних павуків, то складання індексу займе в нас (750000 сек)/ 3600 / 24 = 8.68 діб > тижня. Тому заходимо на
https://dumps.wikimedia.org/ , вибираємо дамп який більше подобається, наприклад останній дамп що містить статті (без сторінок обговорень) української вікіпедії і ставимо на скачування.

А поки воно скачується підготуємось його розпаковувати. Ми скачуємо заархівований XML, який при розпаковуванні займає щось біля 5GB. Всередині є багато тисяч елементів , кожен з яких містить деталі про сторінку. Ось код на Go який містить функцію Read що розархівовує і водночас парсить XML, та повертає канал в який кидає сторінку за сторінкою, а в головній функції ітерується по всіх сторінках і підраховує кількість символів в їх тексті. В кінці виводить статистику:
Прочитати решту цього запису »

Written by bunyk

Березень 16, 2018 at 23:30

Оприлюднено в Кодерство, Павутина

Tagged with ,

Як помиготіти клавіатурою ноутбука в Linux

with 5 comments

Для тих кому мало гірлянди на свята 😉 . Якщо в файл /sys/devices/platform/dell-laptop/leds/dell::kbd_backlight/brightness (в коментах підказують що є і інші файли) записати ціле число від 0 до 2, то це встановлює відповідну яскравість підсвітки клавіатури. Наприклад:

import time

with open('/sys/class/leds/dell::kbd_backlight/brightness', 'w') as brightness:
    i = 0
    while True:
        i += 1
        time.sleep(0.2)
        brightness.write(str(i % 3))
        brightness.flush()

В коментарях підказують що для інших комп’ютерів можна вставити інші імена замість dell, але мені нема чим потестувати. Взагалі, подивіться що у вас лежить у /sys/class/leds

Written by bunyk

Січень 2, 2018 at 13:08

Оприлюднено в Кодерство

Tagged with

Нові життєві віхи

with 6 comments

Ех, мені вже мало не пів року тому стало 27, а я досі ніяких підсумків не встиг підбити. Моя дружина часом каже що вона на мене погано впливає, бо я вже рідше вчу німецьку, забив на танго, і навіть в блог не пишу. Не знаю чи це так, що саме впливає можна визначити лише контрольованим експериментом, а тут лише anecdotal evidence. 🙂

Найголовніше що сталось цього року, як ви могли зрозуміти з речення зі словами “моя дружина” – я одружився. І заодно вирішив змінити роботу з мегаперспективної де багато досвіду (а я найголовніший (і мало не єдиний) фронт-ендер) але мало платять, на нуднішу де краще платять (виявилось що аутсорс це не завжди нудні процеси, це іноді веселі дедлайни поки процеси не встаканились, плюс можливість працювати з інженерами які раніше клепали грізну зброю для Northrop Grumman, а тепер вчать тебе клепати мирні мікросервіси для телекомів. Працювати з інженерами клієнта набагато приємніше ніж працювати з економістами/менеджерами клієнта).

Але основна причина звісно в тому, що ще в 2016 я міг взагалі не паритись про гроші, був цілком впевнений що витрачаю менше ніж заробляю, бо жив “шо голімий монгол” (замість ліжка матрацрозкладне крісло, стидуха тьолку в хату привести), і витрачав на оренду 700грн + 300 комунальних максимум. Але дружину привести в таку хату я не міг.

Тепер думаю що варто ще складати на своє житло. Чи спершу придбати машину? Машина мала б додати мобільності в переїздах і подорожах, але цікаво який бюджет на неї потрібен з врахуванням амортизації, всяких страховок, мастил і палива? І як вибрати машину з найбільшим ККД від бюджету на неї?

А ще я подумав про пенсійний фонд. 🙂 Якщо з 30 років відкладати в пенсійний фонд по 1000 грн щомісяця, то в 60 можна вийти на пенсію, і якщо дожити до 90, то отримувати ці ж самі 1000 грн пенсії. З яких невідомо скільки з’їсть інфляція. Якщо відкладати в доларах, і якщо інфляція долара постійна і дорівнює 1.5% на рік, то за 30 років з кожних 100$ залишиться лише 64$. Можна наскладати квартиру у Львові і на старості здавати її в оренду, але не факт що через 30 років приріст населення у Львові буде такий як зараз і хтось захоче її брати, тобто вона матиме цінність. Може люди з’їжджатимуться в Сан-Франциско, але є ризик що житло там може знищити землетрус. Коротше кажучи, як пише Талеб – інвестиції це складніше ніж фінансисти собі думають.

Ще мене часто питають що змінилось після одруження. Та не так вже й багато. В моєї дружини наприклад більше змінилось, вона тепер коли показує диплом, показує ще довідку про одруження аби пояснити чому в неї прізвище на дипломі не співпадає з прізвищем в паспорті. Дурниця, але приємно, Буників раптом стало більше.

Найпомітніше – це постійна позначка на безіменному пальці правої руки. Я іноді аби щось не забути записую на руці, а тут штука яка не змивається. Я вже правда звик і помічаю рідше, але коли помічаю це змушує задуматись про те що зараз в мене все трохи інакше ніж раніше.

Більше ніяких змін взагалі. Після одруження ми сваримось навіть менше ніж до одруження (до було раз чи два, після – ніби ще жодного разу). Так, іноді виникають якісь конфлікти, на зразок “я хочу відпустку в гори, а вона на море”, але ми доходимо до компромісу і їдемо в Буковель 🙂 (Буковель має доволі холодне озеро, море – це таки трохи інша справа). Крім того моя дружина досить песимістична, і не очікує від стосунків нічого доброго (точніше каже що сподівається на краще але готується до гіршого) (статистика ж показує що люди розлучаються а ті які не розлучаються – переважно нещасливі в шлюбі, наївно думати що ми чимось кращі), тому стосунки набагато приємніші ніж з підходом “справжня любов все витерпить”.

Щодо іншого, насправді я вже не так і мало пишу. Ось дружина мені подарувала книжку “Інноватори”, я про неї написав. Але чомусь не було часу написати про мандри Стамбулом і в Анталію. Ото тільки недавно зібрались клеїти сімейний альбом.

Written by bunyk

Грудень 11, 2017 at 21:46

Оприлюднено в Нещоденник

Tagged with , ,

Простеньке Go API з JWT авторизацією

with 5 comments

Щоб щось зрозуміти іноді легше писати ніж читати (В мене була потреба зрозуміти як працює middleware jwt авторизації, і я цей код читати не міг. Довелось для розминки написати аналогічне, трохи помогло).

Якщо вам цікаво що таке JWT і для чого, то в двох словах – це можливість видати комусь право доступу до чогось без бази даних де б писало що ми йому таке право давали. Тобто сервер на якому користувач авторизується, і сервер до якого він отримує доступ – це можуть бути два абсолютно окремі сервери, які не те що не мають спільної бази даних, вони навіть не спілкуються мережею. Головне – правильні ключі.

Напишемо наступне супер просте API:
POST /login {user: “”, password: “”} – віддає нам JWT токен для дозволу запису
GET / – віддає нам список записів
POST / – з заголовком “Authorization: Bearer ” дозволяє додати новий запис до списку, якщо ми авторизовані.

Для початку зробимо все без авторизації:

Прочитати решту цього запису »

Written by bunyk

Грудень 10, 2017 at 23:24

Оприлюднено в Кодерство, Павутина

Tagged with