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

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

Як помиготіти клавіатурою ноутбука в 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

Advertisements

Written by bunyk

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

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

Tagged with

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

with 5 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

Як швидко розпочати писати SPA на AngularJS (1)

leave a comment »

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

Варто мати встановленим NodeJS. Він має менеджер пакетів npm. І з його допомогою ми скачаємо всі необхідні бібліотеки. Ми ж перестали шукати софт на сайтах ще коли почали користуватись менеджерами пакетів в Linux, те ж саме ми робимо коли нам треба бібліотека для python, то чим розробка для браузерів гірша?

Тут я був написав кілька абзаців про те як за допомогою npm поставити bower (інший менеджер пакетів), але це трохи збочення, бо npm нас може й сам задовольнити. Тому поки що обійдемось. Let the hacking begin.

Створюємо порожню директорію для нашого проекту, і в ній виконуємо:

npm init

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

Written by bunyk

Червень 1, 2017 at 14:01

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

Tagged with ,

Як я був нелегальним мігрантом в Польщі

with 6 comments

Єху, моя мрія відколи я отримав закордонний паспорт – з’їздити до Відня (бо він ближче ніж якийсь там Берлін) здійснилася. Правда я відвідав не так Відень як Хакатон вікімедіа, але окрім трьох днів на хакатон, я собі дві половини днів на огляд міста вділив.

Єдине, що мене австрійське посольство трохи підставило. Готель написав їм листа що в мене зарезервований готель:

Dear sirs, herewith we confirm the stay of Mr. Taras Bunyk in our JUFA Hotel Wien City, from the 18th to the 22nd of May 2017.

І вони дали мені візу з 18-го травня до 6 червня, з правом перебування 5 днів. І я собі купив квиточки на LeoExpress так щоб прибути 18-го і виїхати 22-го.

Тільки виявилось проблема в тому що якщо виїжджати автобусом в 6-тій вечора з Відня, то прибуває той автобус лише в 7-мій ранку, а це вже 23-тє число. І тоді тебе знімають з автобуса, ти ще чекаєш наступної зміни у восьмій, ті щось довго пишуть, тоді беруть відбитки пальців, 50 злотих штрафу, тоді ти ще довго чекаєш аби тебе сфотографували і взяли кращі відбитки пальців.

Зате є шанс познайомитись з якимось молдаванином який тікає з німеччини додому, бо його там цигани рік тримали і змушували жебракувати.

І з якимось хлопцем який віз з Вінниці подарунок якомусь своєму знайомому поляку – бейсбольну биту, яку врахували як зброю. 🙂 Який розказав що був одружений, але потім поїхав до Польщі, і його дружина кинула, бо знайшла іншого. Хтось його запитав чи це через те що він в Польщу від неї поїхав? Він казав нє, приїхала до мене в гості. Поляка знайшла? Та нє, якогось іншого українця. 🙂

В 11-тій тобі нарешті віддають паспорт і квитанцію про сплату штрафу і відводять до українського шлагбауму. Ще жодного разу не був такий щасливий бачити українського прикордонника. Українці пропускають без проблем.

І ти біжиш на українську територію, тобі український прикордонник відкриває браму, і ти бачиш перед собою дорогу до Львова, на якій нема жодних зупинок для маршруток чи чогось подібного.

Спочатку мене довго не брали, але коли дістав 50-тку, якась машина з чоловіком що віз побутову хімію для свого магазину таки зупинилась. Хоча він казав що він і так до Львова їде і йому ті гроші не треба. Другий успішний випадок автостопу в житті. І перший в Україні, бо попередній був в Німеччині.

Тепер мені на пів року заборонено в’їжджати до Польщі. Що насправді шкода, так це те, що я навіть “покурити” в Кракові не виходив. І Австрію покинув ще 22-го.

Written by bunyk

Травень 24, 2017 at 18:47

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

Як написати бота до Telegram?

with 5 comments

Легко. 🙂 Давайте напишемо бота який перекладатиме нам всяке з німецької:

Приклад діалогу

Для цього нам треба поговорити з botFather-ом:

А зараз трохи не по темі цієї статті. Ось код який перетворює вікідані на словник, шукаючи всі сутності які мають мітки однією мовою, а потім показучи їх мітки іншою мовою, використовуючи хитрий запит SPARQL:

import json
import requests

def translate(from_lang, to_lang, word):
    '''
        Переклдає мітки елементів вікіданих з мови на мову. Повертає список варіантів перекладу
    '''
    res = sparql('''
        SELECT  ?ukLabel WHERE {
          ?item ?label "%s"@%s.
          ?item rdfs:label ?ukLabel filter(lang(?ukLabel) = "%s")
        } LIMIT 10
    ''' % (word, from_lang, to_lang))
    return list(map(
        lambda e: e['ukLabel']['value'],
        res['results']['bindings']
    ))

def sparql(query):
    ''' Отримує JSON дані запиту SPARQL до вікіданих '''
    res = requests.get(
        'https://query.wikidata.org/sparql',
        params={
            'query': query,
            'format': 'json'
        }
    )
    return json.loads(res.text)

А тепер повертаємось до теми телеграмного бота. Аби його написати треба поставити бібліотеку:

pip install pyTelegramBotAPI

Ось її Github: https://github.com/eternnoir/pyTelegramBotAPI

А далі – елементарно як писати консольну програму:

import telebot

TOKEN = '' # тут вставити те що BotFather сказав

bot = telebot.TeleBot(TOKEN)

@bot.message_handler(content_types=["text"]) # Якщо прийдуть нові повідомлення
def respond_to_message(message):
    translations = translate('de', 'uk', message.text) # Отримати переклади тексту повідомленя
    resp = '\n'.join(translations) if translations else 'На жаль, перекладу слова %s не знайдено' % message.text
    bot.send_message( # відправити назад
        message.chat.id, # в той самий чат з якого прийшло (можна напевне й в інший)
        resp
    )

if __name__ == '__main__':
     bot.polling(none_stop=True) # Запустити бота аби той сидів на лінії і слухав повідомлення.

Поки що все, бо й висипатись іноді треба. Пізніше нагадайте мені не забути написати більше про SPARQL, як поставити собі локальну mediawiki і розширення до неї, як логінити сторонні застосунки через OAuth, і як переписати інтерфейс вікіпедії на Vue.js. 🙂

Written by bunyk

Травень 22, 2017 at 01:51

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

Tagged with ,

Конспект Vue.js

with 6 comments

Не варто припиняти вчити щось нове, правда? І писати – надійніший метод запам’ятати ніж просто читати, тому спробую повернути блог до життя.

CDN

Найпростіший спосіб яким ви можете почати використовувати Vue – це завантажити його на свою сторінку з CDN: https://cdnjs.cloudflare.com/ajax/libs/vue/2.1.10/vue.min.js

Hello world!

Якщо у нас є такий HTML шаблон:

<div id="app">
  {{title}}
</div>

То мінімальний JavaScript який дозволяє його заповнити виглядає так:

var data = { // Модель - це просто будь-який об'єкт
    title: "Hello world!"
};
new Vue({
  el: "#app", // вибрати елемент за id
  data: data  // приєднати модель
});

Тепер, якщо в консолі браузера написати:

data.title = 'It works!'

То текст на сторінці зміниться автоматично. (І не треба ніякої мороки з дайджест-циклом через angular.element(e).scope().$apply() (Ангуляр-страждання, забийте)).

От так в’ю оновлюється коли змінюється модель. Як користувач може змінити модель?
Прочитати решту цього запису »

Written by bunyk

Квітень 26, 2017 at 22:37

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

Tagged with