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

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

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

leave a comment »

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

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

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

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

npm init

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

Advertisements

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

Побудова “скриньок з вусами” львівських квартир що здаються на сьогодні

with 3 comments

Я ще минулого року помітив що в питаннях про Python на StackOverflow обговорюють якісь панди. Це, як виявилось обгортка навколо matplotlib, numpy і подібних гарних речей. А ще, лазячи по своїх документах в Google знайшов скачану вже позаминулого року стіну групи пошуку нерухомості вконтакті. І так співпало що я і мій колега-аналітик зараз шукаємо квартиру у Львові. Я йому показав цей файл, і він загорівся бажанням проаналізувати ще якийсь сайт оголошень.

При всій повазі до lun.ua, але тут я прорекламую dom.ria.com. Передовсім, там є українська версія. А ще, можливість скачати результати пошуку як електронну таблицю, хоч і в xls форматі, і лише одну сторінку.

В python читати xls вміє бібліотека xlrd, тому треба доставити ще й її. Pandas взагалі має багато необов’язкових залежностей:

sudo pip3.5 install jupyter pandas xlrd matplotlib
jupyter notebook # дуже модний графічний інтерпретатор

Якщо все поставити як вище і запустити “jupyter”, то можна робити обчислення в отакому документі: https://github.com/bunyk/mypandas/blob/master/dom.ria/dom.ria.ipynb
Прочитати решту цього запису »

Written by bunyk

Січень 4, 2017 at 01:30

Ретроспектива 2016

with 2 comments

В двох словах:

If you work hard enough you can replace depression with exhaustion

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

Проте на відміну від попередніх років в особистому житті напруження нема. Тому що найкраща дівчина не німа, найкраща – розумна. І тоді все вона говорить – допомагає. Хоча проблеми звісно трапляються, але вирішуються вони колаборативно. Наприклад дзвониш ти такий, і по інтонації чуєш що вона чимось засмучена або сердита. І кажеш “давай зустрінемось, я тобі шоколадку куплю, чи якихось цукерок”. А вона “Ні, шоколадка має високий глікемічний індекс[джерело?], від цього в мене на короткий час зросте рівень глюкози, а потім різко впаде, і я буду ще більше роздратована ніж зараз. Давай краще м’яса поїмо.”

Рік почався з Ремоліно і Подорожі. Потім було купа роботи, знайомство зі світом стартапів і дуже значимою людиною.

Я так і не навчився писати веб-застосунки, бо нема на те часу, треба закінчити наш проект, який ніяк не закінчується. 😦

З хорошого: Я певною мірою посприяв написанню цієї статті про ботів вікіпедії, і дізнався що розумію білоруську.

З поганого: Я познайомився з Elm, але не мав часу написати щось серйозне.

Малювалку сніжинок написав на чистому JavaScript.

Пробував зробити достроковий бета реліз нашого продукту, але це теж був повний фейл.

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

Відвідав два дорогих танго майстер-класів, але краще танцювати не став. Зате моя дівчина танцює чудово.

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

Written by bunyk

Грудень 31, 2016 at 15:41

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

Орбіта Гомера Сімпсона

with 3 comments

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

До ознайомлення:

  1. Епіцикл
  2. Ряд Фур’є
  3. А також Дискретне косинусне перетворення – завдяки якому працюють оці ваші mp3 і mpeg, завдяки яким ви подивитесь оце відео.

Written by bunyk

Листопад 15, 2016 at 22:18

Оприлюднено в Всяке

Tagged with