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

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

Posts Tagged ‘блог

Мій електронний ресурс

with 6 comments

Сьогодні цьому блогу вже шостий рочок. Шість років тому я вчився робити сайти (на PHP, хех), потім зрозумів що вже є готові скрипти, такі як WordPress, потім зрозумів що WordPress навіть інсталювати не треба, досить просто зареєструватись. І правильно зробив, бо як виявилось, дуже багатьом блогерам надоїдає платити за хостинг і вони зникають, після років проведених в ефірі. Мій блог все ще живий, я все ще вчусь

Що цікаво – якщо мені треба щось згадати, то я часто просто гуглю свої статті. І часто таки знаходжу саме їх, бо там оригінальні назви. Іноді ще дописую назву блогу, якщо нічого оригінального не пишу. Наприклад “скачати кібера” – це стара шпаргалка по wget. А якось нагуглив посилання на себе. І не просте, а зі зноскою:

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

9 Влада ринку і витрати виробництва. Блог одного кібера // [Електронний ресурс]. — Режим доступу: https://bunyk.wordpress.com/2013/02/16/the-tyranny-of-the-market/

Стаття називається Глобалізація фармацевтичного ринку як загроза економічного суверенітету України. І її написав Віталій Пашков, доктор юридичних наук, провідний науковий співробітник НДІ правового забезпечення інноваційного розвитку АПрН України.

Круто. Але цю цитату я взяв з книжки “Тиранія ринку”, а книжка її взяла з газети New York times:

Among the biggest sellers are drugs to grow hair, relieve impotence or fight cholesterol, ulcers, depressions, anxiety, allergies, arthritis and high blood pressure.

May 21, 2000 Drug Companies and the Third World: A Case Study in Neglect By DONALD G. McNEIL Jr.

Я думав я то вказав там джерела, але напевне якось надто гіпертекстово, тобто в самому рядку. Напевне треба було зробити розділ “Література”, і зноски туди. Тільки на жаль цей блог на відміну від вікіпедії не дозволяє таке зручно робити. Простіше вставляти посилання прямо в текст.

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

Інше визнання я отримав від якогось українського індуса:

Ви хочете сказати що держава підтримує українську мову? І в чому ж та підтримка полягає? Так, дозволено писати заяви мусорам українською мовою. А от навіть ЖКГ далеко не все українізоване. Може телевізійна реклама україномовна, а серіали вже масковскіє пра святих апрічніков – мєнтов, ГБістов, асвабадітєлєй всього, до чого тільки змогли дотягнутися. Єдиний плюс від нашої держави (на відміну від Білорусі), що за надмірне(!!) використання української ще не ув’язнюють. Щось не було чутно від Шевельова і Багряного про ущємлініє української мови на Онтарщині, НьюЙоркщині та Баварщині. Змінити мою думку може тільки якщо скажімо Буник/Реплейс/спілка “Гуртом”/тойХтоСтворюєКонтент заявить про те, що його підтримує держава. До речі, отой логотип до 200-річчя з дня народження Т.Г.Шевченка коштував державі 30 тис. гривень. І я нагадаю, що цей малюнок має розповідати про видатного художника (гравера в тому числі).

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

Отаке. Всім дякую за те що ще читаєте. Особливо тим кому я за ці 6 років не надоїв, але й тим хто зі мною тільки недавно познайомився.

Written by bunyk

Січень 27, 2015 at 00:00

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

Tagged with ,

Цілковите пограбування блогу

with 5 comments

І маленький експеримент щодо написання більш грамотного коду… В мене була ідея перетворювати *.py файли в публікації, а публікації – в виконувані *.py-файли, але поки що ця ідея все ще в статусі ідеї, тому тут просто буде код який можна оформити як пост:

'''
Невеликий скрипт який дозволяє завантажити собі на комп’ютер
який-небудь WordPress блог повністю. До останньої публікації.

Раніше я робив це за допомогою пошуку в ширину, MongoDB, регулярних виразів 
і багатьох інших зайвих речей. http://pastebin.com/e4SnvzAX

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

'''

def main():
    '''
    Звідси програма починає роботу.
    Звісно, після того як модуль завантажить всі функції нижче.
    '''
    
    # Завантажмо наприклад мій блог:
    load_blog('https://bunyk.wordpress.com/')


def load_blog(url):
    ''' Завантажує блог в піддиректорію поточної директорії '''

    if not url.endswith('/'):
        # На всяк випадок гарантуємо що url закінчується слешем
        url = url + '/'

    # Нехай ім’я блогу - це найдовша частина url (адреса серверу зазвичай)
    blogname = max(url.split('/'), key=len)
    print(blogname)

    # Переконуємось що директорія куди ми завантажуватимемо блог існує.
    checkdir(blogname)

    sitemap = wget(url + 'sitemap.xml')

    # І зберігаємо кожну сторінку про яку пише sitemap:
    for page in iter_pages(sitemap):
        if is_article(page):
            save_page(page, blogname)

def is_article(url):
    ''' Якщо кількість слешів в url менше семи - це не стаття '''
    return sum(1 for c in url if c == '/') >= 7

def save_page(url, blogname):
    ''' Завантажити сторінку блога в файл '''
    name = url_to_name(url)
    print(name)
    with open(blogname + '/' + name, 'w', encoding='utf-8') as f:
        f.write(wget(url).decode('utf-8'))

def url_to_name(url):
    assert isinstance(url, str)
    # прибираємо адресу блогу і слеші з назви сторінки.
    name = ' '.join(url.split('/')[-4:]).strip()

    # розшифрувати кодування з %, якщо в URL кирилиця
    return unquote(name) 

try:
    from urllib.parse import unquote
except ImportError:
    from urllib import unquote


def wget(url):
    ''' Приймає url, повертає вміст того URL в кодуванні сторінки '''
    h, c = http.request(url)
    if h.status == 200:
        return c

''' Завантажувати сторінки будемо за допомогою httplib2 '''
import httplib2
http = httplib2.Http('.cache')


''' Для парсингу sitemap нам потрібна бібліотека для роботи з XML: '''
try:
    from lxml import etree
except ImportError:
    import xml.etree.ElementTree as etree

def iter_pages(sitemap):
    ''' Ця функція перетворює sitemap, даний як байти, на ітератор по url-лах '''

    assert isinstance(sitemap, bytes)

    tree = etree.fromstring(sitemap)

    ''' XPath селектор далі каже нам шукати всі елементи loc, в просторі імен
    sitemap всередині документа. '''
    return (
        element.text for element in
        tree.findall('.//{http://www.sitemaps.org/schemas/sitemap/0.9}loc')
    )


import os
def checkdir(directory):
    ''' Переконатись що директорія існує, а якщо ні - створити '''
    if not os.path.exists(directory):
        os.makedirs(directory)


if __name__ == '__main__':
    main()

Що далі?

Далі було б варто викинути html та залишити лише текст, і провести над ним якісь статистичні дослідження. Але я подумав що щоразу вручну знаходити xpath для головного вмісту сайту якось незручно і варто б це діло автоматизувати. А виявилось що виділення вмісту веб-сторінки – це тонка наука, і є задачею штучного інтелекту. І розв’язується не логічним підходом, а статистичним. Зокрема я накопав наступні роботи:

  1. 2007, alexjc The Easy Way to Extract Useful Text from Arbitrary HTML
  2. 2010, Roman Gelembjuk How to extract useful content from HTML page. Приємна несподіванка, автор статті з Франківська.
  3. 2010, Christian Kohlschütter, Peter Fankhauser and Wolfgang Nejdl: Boilerplate Detection using Shallow Text Features.

Але все це почитавши я подумав що для моїх потреб поки що XPath зійде…

Written by bunyk

Вересень 2, 2013 at 21:44

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

Tagged with ,

Як додати кнопку Вконтакту на свій WordPress блоґ

with 3 comments

Я знав, зробив, забув. А варто було б записати, бо то ніби просто, а пояснювати чомусь довго.

  1. Потрібно зайти в адмінку -> налаштування -> Sharing (За адресою http://ваш_блог.worpress.com/wp-admin/options-general.php?page=sharing).
  2. Знайти розділ “Available Services”, під ним є невелике посилання “Add a new service”, натиснути його. (До речі, переклад WordPress.com відбувається тут, завершений на 12%, я сам звісно теж давно ним не займався, тому й вас не змушуватиму, але просто, доводжу до відома ;)).
  3. В поле “Service name” написати текст який ви хочете бачити на кнопці, наприклад “vk”.
  4. В поле “Sharing URL” додати такий текст: “http://vkontakte.ru/share.php?url=%post_url%“.
  5. В поле “Icon URL” написати посилання на іконку вконтакту. Наприклад: “http://vk.com/images/vk16.png“.
  6. Натиснути “Create share button”. Кнопка вконтакту має з’явитись серед інших доступних сервісів.
  7. Перетягнути її до панельки “Enabled Services”.
  8. Внизу натиснути “Зберегти зміни”.
  9. Відкрити якусь сторінку блогу, і перевірити кнопку.
  10. Аби в цій інструкції було кругле число кроків, вам потрібно потішитись від того що воно нарешті працює. 🙂

При потребі можете звертатись до документації вконтакту, ну чи відписуватись про актуальність і ефективність цієї інструкції в коментарях.

Written by bunyk

Квітень 7, 2013 at 21:47

Оприлюднено в Інструменти, Конспекти

Tagged with

Звільнитись від творчого блоку

with 20 comments

Я дуже перепрошую, але я іноді просто не можу мовчати. Хоча все ще не знаю де ставити коми. І не знаю як відрізнити складносурядне речення від складнопідрядного.

Це дещо пов’язано з тим, що в ліцеї, коли хтось зайшов на пару і сказав “Треба навантажити Камаз шутром”, я першим вилетів з аудиторії. Я боявся що мене можуть вдесятий раз запитати як пишеться \frac{1}{2}яблука, окремо чи через дефіс, а я знову не вгадаю. Це можна було б спихнути на те що тексти в курсі української мови страшенно нудні, але це не так. На англійську я ходив із задоволенням, проте це не заважало англійській граматиці пролетіти повз мої вуха.

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

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

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

grammatik-macht-frei2

А тим часом грамнацисти, пам’ятайте, на сторінках цього блога вам завжди раді. Без вашої допомоги стати грамотнішим важко.

P.S. Згадав що нацисти любов до граматики запозичили в римлян. А ви думали Монті Пайтон тільки спам, філософський футбол і назву для моєї улюбленої мови програмування придумали?

Written by bunyk

Лютий 13, 2013 at 11:52

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

Tagged with ,

Життя – це гра, а …

with 5 comments

… жанр у неї – RPG. 🙂

Отак живеш, лутиш, лутиш, лутиш, і ніби нічого не відбувається, хіба що малу-помалу набирається досвід. Але одного дня зустрічається трохи більша проблема, а ти вперто продовжуєш грати PvE і раптом, опа! Level Up! Stamina відновлюється до початкового рівня. Юніттест імпрувед. Ймовірність багрезіста крайнє мала.

Сьогодні десь біля дев’ятої вечора я отримав неймовірний кайф від того що код який я писав до вихідних, і для якого вчора цілий день писав тести, за цілий день вилизування таки їх пройшов. Може це відчувають вболівальники коли їхня команда виграє в футбол? Хоча сумніваюсь. Це напевне футболісти відчувають. Бо виграв не мій код, а я виграв код. Я його цілий день грав, і таки виграв. 🙂

В мене не виходило йти до дому зі швидкістю меншою ніж 15 км/год, хоча єдине чим я обідав – пів батона з кавою з молоком + печеньки. Запас енергії людина має з їжі і повітря, а от регулятор потужності – явно щось психологічне. Цікаво, як би навчитись ним керувати без вливання різного роду речовин?

Правда ще вирішив залишити все до понеділка, і тоді перечитати. Бо якось я пушнув забив код в п’ятницю після обіду, і після того довелось два чи три дні відіграватись. Відтепер в п’ятницю ввечері нічого не перевіряю остаточно, тільки збираю інформацію і досвід. 🙂

Думаю варто буде ще написати програмку, яка в фоновому режимі перевіряє кодову базу і в разі чого розміщує на робочому столі зображення Гендальфа, який намагається захистити гобітів проект:

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

Written by bunyk

Травень 4, 2012 at 22:54

Кіт Харінг сьогодні святкував би 54-тий день народження

with 2 comments

Якби не вмер від СНІДу взимку 1990. Кіт Харінг – це художник картина якого сьогодні експонується на логотипі Google, а ви читаєте це, тому що я вирішив зробити хитрий SEO-експеримент.

Вікіпедійна стаття теж мій SEO-експеримент, але тут краще рахувати статистику.

Картинка Харінга 1986-того року. Без назви. Я б назвав “Андроїди плодяться”. 🙂

На цьому все, дякую за увагу, можете повертатись до того чим займались. 🙂

Written by bunyk

Травень 4, 2012 at 01:10

Оприлюднено в Передруки

Tagged with

Мій перший пост написаний з bpython

with 12 comments

За допомогою цікавої бібліотечки python wordpress xmlrpc.

Власне багато писати не буду, цікаво чи запоститься

Written by bunyk

Грудень 19, 2011 at 21:16

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

Tagged with ,