{
    "version": "https:\/\/jsonfeed.org\/version\/1.1",
    "title": "Рома Рыбальченко: заметки с тегом js",
    "_rss_description": "Аналитик-разработчик в Алисе",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": "",
    "_itunes_explicit": "",
    "home_page_url": "https:\/\/keen.nerevar.com\/tags\/js\/",
    "feed_url": "https:\/\/keen.nerevar.com\/tags\/js\/json\/",
    "icon": "https:\/\/keen.nerevar.com\/pictures\/userpic\/userpic@2x.jpg?1471192837",
    "authors": [
        {
            "name": "Неревар",
            "url": "https:\/\/keen.nerevar.com\/",
            "avatar": "https:\/\/keen.nerevar.com\/pictures\/userpic\/userpic@2x.jpg?1471192837"
        }
    ],
    "items": [
        {
            "id": "24",
            "url": "https:\/\/keen.nerevar.com\/all\/radosti-programmista\/",
            "title": "Радости программиста",
            "content_html": "<p>dos, pascal:<\/p>\n<ul>\n<li>смотри, оно выполняет твой алгоритм, который запрограммировал!<\/li>\n<li>можно работать с тем что ты ввёл, спрашивать любые числа и решать уравнения (в школе)<\/li>\n<li>а потом даже игрушку сделать, змейку, тетрис 80x25<\/li>\n<\/ul>\n<p>windows, delphi7:<\/p>\n<ul>\n<li>смотри, формы, можно сделать свой калькулятор или сапёр, настоящее windows приложение!<\/li>\n<li>если рисовать картинки-спрайты и их передвигать, то получится наколеночная версия героев 3<\/li>\n<li>а если подключить tcp\/ip и udp, то можно сделать сетевой чатик, или даже Radmin<\/li>\n<\/ul>\n<p>web, php:<\/p>\n<ul>\n<li>смотри, это кроссплатформенно, работает в любом браузере на любой ОС!<\/li>\n<li>можно верстать полупрозрачности-градиенты, воплотить любой интерфейс, гораздо красивее windows controls<\/li>\n<li>с помощью кравлеров можно спарсить весь интернет себе<\/li>\n<\/ul>\n<p>web, js:<\/p>\n<ul>\n<li>смотри, твой код работает на сотне серверов и миллионы пользователей каждый день пользуются твоим UI!<\/li>\n<li>а js можно писать и на клиенте и на сервере, прикольно. Посмотрим что из этого получится<\/li>\n<li>ios, android: теперь можно делать приложения, работающие на телефонах и планшетах: свайпы, зумы, доступ к камере, gps<\/li>\n<\/ul>\n<p>mapreduce, python:<\/p>\n<ul>\n<li>смотри, 15000 машинок обработают десятки терабайт данных за полчаса и выведут тебе результат!<\/li>\n<\/ul>\n",
            "date_published": "2016-07-18T11:30:53+03:00",
            "date_modified": "2016-07-18T11:29:37+03:00",
            "tags": [
                "frontend",
                "js",
                "programming",
                "python",
                "яндекс"
            ],
            "_date_published_rfc2822": "Mon, 18 Jul 2016 11:30:53 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "24",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": []
            }
        },
        {
            "id": "16",
            "url": "https:\/\/keen.nerevar.com\/all\/yandex-frontend-video-lectures\/",
            "title": "Подборка докладов и видеолекций про БЭМ и фронтенд в Яндексе",
            "content_html": "<p>В Яндексе есть огромное количество докладов про технологии, инструментов и фреймворков фронтенда. Большая часть из которых содержит NDA информацию и доступна только сотрудникам. Но много людей выступают на открытых конференциях и рассказывают про внутренние технологии.<\/p>\n<p>Этот список докладов и выступлений, доступных извне, я подбирал для новых разработчиков интерфейсов в Яндекс.Картинках, чтобы у них появилось представление о том, как всё внутри устроено. Он не претендует на полноту, но затрагивает большие ключевые аспекты работы разработчика интерфейсов.<\/p>\n<p>Про БЭМ:<\/p>\n<ul>\n<li><a href=\"https:\/\/events.yandex.ru\/lib\/talks\/686\/\">БЭМ: от методологии до платформы<\/a><\/li>\n<li><a href=\"https:\/\/events.yandex.ru\/lib\/talks\/1441\/\">Методология БЭМ и обзор БЭМ платформы<\/a><\/li>\n<li><a href=\"https:\/\/events.yandex.ru\/lib\/talks\/544\/\">БЭМ: история появления, принципы методологии, базовые понятия<\/a><\/li>\n<li><a href=\"https:\/\/events.yandex.ru\/lib\/talks\/2185\/\">Мастер-класс наоборот: вы пишете БЭМ-проект, а мы подсказываем<\/a><\/li>\n<\/ul>\n<p>Прикладное, про разработку:<\/p>\n<ul>\n<li><a href=\"https:\/\/events.yandex.ru\/lib\/talks\/1581\/\">i-bem.js<\/a><\/li>\n<li><a href=\"https:\/\/events.yandex.ru\/lib\/talks\/1321\/\">Cистемы контроля версий<\/a><\/li>\n<li><a href=\"https:\/\/events.yandex.ru\/lib\/talks\/1289\/\">Общий цикл разработки (dev-cycle<\/a>)<\/li>\n<li><a href=\"https:\/\/events.yandex.ru\/lib\/talks\/97\/\">AJAX в поиске по вебу, history API<\/a><\/li>\n<li><a href=\"https:\/\/events.yandex.ru\/lib\/talks\/1327\/\">Развертывание верстки<\/a><\/li>\n<\/ul>\n<p>Общее:<\/p>\n<ul>\n<li><a href=\"https:\/\/events.yandex.ru\/lib\/talks\/1437\/\">Шаблонизаторы (templates<\/a>)<\/li>\n<li><a href=\"https:\/\/events.yandex.ru\/lib\/talks\/1329\/\">Механизм работы браузера<\/a><\/li>\n<li><a href=\"https:\/\/events.yandex.ru\/lib\/talks\/1330\/\">Кеширование на клиенте и сервере<\/a><\/li>\n<li><a href=\"https:\/\/events.yandex.ru\/lib\/talks\/1579\/\">JavaScript. События<\/a><\/li>\n<li><a href=\"https:\/\/events.yandex.ru\/lib\/talks\/1433\/\">Транспорт, ajax (js-ajax<\/a>)<\/li>\n<li><a href=\"https:\/\/events.yandex.ru\/lib\/talks\/677\/\">Безопасность веб-приложений<\/a><\/li>\n<\/ul>\n<p><a href=\"https:\/\/academy.yandex.ru\/events\/shri\/\">Доклады с Школы Разработки Интерфейсов<\/a><br \/>\nНу и главное, официальный сайт БЭМ: <a href=\"http:\/\/ru.bem.info\/\">http:\/\/ru.bem.info\/<\/a><\/p>\n",
            "date_published": "2016-06-04T16:01:50+03:00",
            "date_modified": "2016-06-04T16:01:46+03:00",
            "tags": [
                "bem",
                "frontend",
                "js",
                "о работе",
                "яндекс"
            ],
            "_date_published_rfc2822": "Sat, 04 Jun 2016 16:01:50 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "16",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": []
            }
        },
        {
            "id": "15",
            "url": "https:\/\/keen.nerevar.com\/all\/chto-novogo-ya-uznal-delaya-zadachi\/",
            "title": "Что нового я узнал, делая задачи или как выходить из рутины на работе",
            "content_html": "<p>Под таким названием я начал вести заметку в Evernote, которой хочу поделиться в бложеке.<\/p>\n<p>Как-то взяв очередную задачу из трекера в работу, я вдруг заметил, что знаю как делать эту задачу. Знаю какие блоки создам. Знаю какой код будет формировать html на сервере. Знаю, какой блок за основу на клиенте, в котором есть все методы, которые мне нужны. Знаю, какие тесты буду писать на блоки. Когда код попадёт на ревью, когда вольётся в основную ветку, выкатится в прод. В задаче не осталось неизвестностей: я ясно и чётко представлял все свои действия на автомате мог это сделать не задумываясь.<br \/>\nИ когда таких задач — подавляющее количество, то пропадает интерес к ним.<\/p>\n<p>Чтобы двигаться вперёд и развиваться, я решил фиксировать новый приобретённый опыт в заметке в Evernote. Одновременно с этим пробовать новые инструменты для работы, технологии, интересные находки в сети.<\/p>\n<p>Сразу скажу, что мне это не сильно помогло, но получилось очень интересно.<\/p>\n<p><b>23 ноября 2015 г.<\/b><\/p>\n<ul>\n<li>git ll —merges — показывает только мёрдж коммиты в ветке. Полезно для dev, чтобы не видеть миллион коммитов в фиче-бранчах<\/li>\n<li>grd — git rebase origin\/dev, предварительно нужно сделать git fetch<\/li>\n<li>vh, vw, vmin, vmax — css vertical height в процентах, т. е. 100vh — 100% по высоте экрана<\/li>\n<li>sublime multiple selection, cursors:\n<ul>\n  <li>выделить что-то<\/li>\n  <li>нажать Cmd+D чтобы выделить следующее<\/li>\n  <li>нажать вправо-влево, чтобы работать с курсором<\/li>\n<\/ul>\n<\/li>\n<li>awk:\n<ul>\n  <li>вырезать вторую колонку: awk ’{print $1 $3 substr($0, index($0,$4))}’;<\/li>\n  <li>разделитель = ’много пробелов’: awk -vOFS=’    ’ ’{print $1,$2,$3}’;<\/li>\n  <li>format printf: awk ’{ printf «%-15s %-20s %s\\n», $1, $3, substr($0, index($0,$4)) }’<\/li>\n<\/ul>\n<\/li>\n<li>написал команду, которая показывала когда кто последний раз заходил на бету — lastloguser\n<ul>\n  <li>for u in nerevar root needed_user; do lastloguser $u; done<\/li>\n<\/ul>\n<\/li>\n<li><end><\/li>\n<\/ul>\n<p><b>25 ноября 2015 г.<\/b><\/p>\n<ul>\n<li>nodejs benchmark:\n<ul>\n  <li><a href=\"https:\/\/github.com\/sbmaxx\/bem-priv#benchmarks-results\">https:\/\/github.com\/sbmaxx\/bem-priv#benchmarks-results<\/a><\/li>\n  <li><a href=\"https:\/\/www.npmjs.com\/package\/benchmark\">https:\/\/www.npmjs.com\/package\/benchmark<\/a><\/li>\n  <li><a href=\"https:\/\/www.npmjs.com\/package\/benchtable\">https:\/\/www.npmjs.com\/package\/benchtable<\/a><\/li>\n<\/ul>\n<\/li>\n<li><end><\/li>\n<\/ul>\n<p><b>26 ноября 2015 г.<\/b><\/p>\n<ul>\n<li>mocha: describe.only — прогоняет тесты только из этого describe<\/li>\n<li>sinon stub: правильно делать так:<\/li>\n<\/ul>\n<pre><pre class=\"e2-text-code\"><code class=\"\">methodStub = sinon.stub(window, 'method', function(params) {\r\n    return params;\r\n});<\/code><\/pre><\/pre>\n<ul>\n<li>в текущем es6 Map polyfill для nodejs не работает keys(), values(), entries()<\/li>\n<\/ul>\n<p><b>3 декабря 2015 г.<\/b><br \/>\nУстановка на чистой машинке:<\/p>\n<ul>\n<li>sudo apt-get install nodejs npm<\/li>\n<li>sudo ln -s \/usr\/bin\/nodejs \/usr\/bin\/node<\/li>\n<li>sudo npm install npm -g<\/li>\n<li>node update:\n<ul>\n  <li>curl -sL <a href=\"https:\/\/deb.nodesource.com\/setup\">https:\/\/deb.nodesource.com\/setup<\/a> | sudo bash —<\/li>\n  <li>curl -sL <a href=\"https:\/\/deb.nodesource.com\/setup_4.x\">https:\/\/deb.nodesource.com\/setup_4.x<\/a> | sudo -E bash —<\/li>\n  <li>sudo apt-get install -y nodejs<\/li>\n<\/ul>\n<\/li>\n<li>для expressjs нужен <a href=\"https:\/\/github.com\/expressjs\/cookie-parser\">https:\/\/github.com\/expressjs\/cookie-parser<\/a><\/li>\n<li>а есть ещё body-parser для тела post-запросов<\/li>\n<\/ul>\n<p><b>4 декабря 2015 г.<\/b><\/p>\n<ul>\n<li>Установить субмодули гита: git submodule update <s>init <\/s>recursive<\/li>\n<\/ul>\n<p><b>5 декабря 2015 г.<\/b><\/p>\n<ul>\n<li>Есть разные версии JDK. Их можно установить все и переключать в dotfiles через JAVA_HOME: <a href=\"http:\/\/stackoverflow.com\/a\/6588410\/3186155\">http:\/\/stackoverflow.com\/a\/6588410\/3186155<\/a><\/li>\n<li>iTerm2 переход по словам Alt+left, Alt+right <a href=\"https:\/\/coderwall.com\/p\/h6yfda\/use-and-to-jump-forwards-backwards-words-in-iterm-2-on-os-x\">https:\/\/coderwall.com\/p\/h6yfda\/use-and-to-jump-forwards-backwards-words-in-iterm-2-on-os-x<\/a>\n<ul>\n  <li>Esc + b → слово назад<\/li>\n  <li>Esc + f → слово вперёд<\/li>\n<\/ul>\n<\/li>\n<li>Evernote bullet hotkey Cmd+Shift+U<\/li>\n<li>Плагины для cordova, связывающие нативную функциональность и js: <a href=\"https:\/\/cordova.apache.org\/docs\/en\/latest\/guide\/hybrid\/plugins\/index.html\">https:\/\/cordova.apache.org\/docs\/en\/latest\/guide\/hybrid\/plugins\/index.html<\/a><\/li>\n<li>Консоль js на android: adb shell «logcat | grep ’Web Console’»<\/li>\n<li>ionic запустить на android девайсе: ionic run android —target=AU5LCINNAQLV4L6T<\/li>\n<li>ionic запустить на android эмуляторе: ionic run android —target=192.168.56.101:5555<br \/>\n8 декабря 2015 г.<\/li>\n<li>Проверить media query: window.matchMedia( ’@media screen and (max-width: 786px)’ ).matches<\/li>\n<\/ul>\n<p><b>11 декабря 2015 г.<\/b><\/p>\n<ul>\n<li>google spreadsheets: полосатая заливка =ISEVEN(ROW())<\/li>\n<li>terminal zsh: Ctrl+Z —> свернуть, развернуть<\/li>\n<li>Yandex Maps Print <a href=\"https:\/\/github.com\/nerevar\/yamaprint\">https:\/\/github.com\/nerevar\/yamaprint<\/a><\/li>\n<li>Q.all, Q.defer — промисы, многопоточность<\/li>\n<\/ul>\n<p><b>21 декабря 2015 г.<\/b><\/p>\n<ul>\n<li>shelljs не работает под самой последней нодой<\/li>\n<li>для gzip лучше не использовать параметр -c, а запускать просто без параметра output’а, чтобы gzip сам создал архив с нужным именем<\/li>\n<li>если selenium-grip не запускает окно браузера — то возможно запускает, просто его нет в Cmd+Tab и нужно посмотреть все открытые окна 4fingers-swipe-down<\/li>\n<li>vim toggle fold block — za<\/li>\n<\/ul>\n<p><b>22 декабря 2015 г.<\/b><\/p>\n<ul>\n<li>Метрика Первый названный бренд (Top-of-mind) — потребитель без подсказки называет определенный бренд первым<\/li>\n<\/ul>\n<p><b>25 декабря 2015 г.<\/b><\/p>\n<ul>\n<li>window.URL.createObjectURL() — создаёт картинку из файла. Формат blob:<hash>, типа base64<\/li>\n<\/ul>\n<p><b>30 декабря 2015 г.<\/b><\/p>\n<ul>\n<li>R studio:\n<ul>\n  <li>считать файл metroflow <- read.table('metroflow.txt')<\/li>\n  <li>построить boxplot: boxplot(metroflow, las=1)<\/li>\n<\/ul>\n<\/li>\n<li><end><\/li>\n<\/ul>\n<p><b>2 января 2016 г.<\/b><\/p>\n<ul>\n<li>в js альтернативой php preg_match_all является str.replace(\/…\/g, callback)<\/li>\n<li>sketch векторный, нет даже eraser brush<\/li>\n<li>seashore basic image editor ничего так<\/li>\n<\/ul>\n<p><b>7 января 2016 г.<\/b><\/p>\n<ul>\n<li>esprima, AST дерево, esprima-walk<\/li>\n<li>Сортировка по убыванию _.sortByOrder(array, ’rank’, ’desc’)<\/li>\n<li>npm i omit-deep для удаления свойств глубоко в объекте<\/li>\n<li>require(’glob’).sync(’images\/blocks-*\/**\/*.js’) — возвращает массив файлов по маске<\/li>\n<\/ul>\n<p><b>10 января 2016 г.<\/b><\/p>\n<ul>\n<li>gitter.im<\/li>\n<\/ul>\n<p><b>12 января 2016 г.<\/b><\/p>\n<ul>\n<li>sinon fakeServer, fakeXMLHttpRequest, stub(jQuery, ’ajax’)<\/li>\n<li>sinon spy & stub<\/li>\n<\/ul>\n<p><b>14 января 2016 г.<\/b><\/p>\n<ul>\n<li>sinon.assert.calledOnce(callbackStub);<\/li>\n<li>AssertionError может триггерить как chai, так и sinon, а mocha ловит их<\/li>\n<\/ul>\n<p><b>22 января 2016 г.<\/b><\/p>\n<ul>\n<li>npm 3 устанавливает все зависимости плоско в node_modules. Если разные версии — то в локальные node_modules<\/li>\n<\/ul>\n<p><b>23 января 2016 г.<\/b><\/p>\n<ul>\n<li>чтобы добавить закоммиченный файл в .gitignore, нужно его сначала удалить git rm -rf —cached <file><\/li>\n<li>windows bat file: переменные объявляются через SET release=jmc%1, используются через 7z.exe %release%.zip<\/li>\n<\/ul>\n<p><b>25 января 2016 г.<\/b><\/p>\n<ul>\n<li>API facebook посчитать количество лайков-шеров <a href=\"https:\/\/api.facebook.com\/method\/links.getStats?format=json&urls=http:\/\/d3name.ru\">https:\/\/api.facebook.com\/method\/links.getStats?format=json&urls=http:\/\/d3name.ru<\/a><\/li>\n<\/ul>\n<p><b>26 января 2016 г.<\/b><\/p>\n<ul>\n<li>установить npm 2: sudo npm i -g npm@2<\/li>\n<\/ul>\n<p><b>29 января 2016 г.<\/b><\/p>\n<ul>\n<li>python NumPy — для работы с массивами и матрицами, статистические функции\n<ul>\n  <li>np.nanmedian — медиана без nan<\/li>\n<\/ul>\n<\/li>\n<li>python matplotlib — для построения графиков<\/li>\n<li>python scipy.stats — для статистических функций распределения случайных величин<\/li>\n<li>python pandas — DataFrame, read\/write from popular formats\n<ul>\n  <li>понять, чо там: data.describe()<\/li>\n  <li>итератор: for index, row in data.iterrows():<\/li>\n  <li>pandas DataFrame to array: data[’Age’].tolist()<\/li>\n  <li>удалить NaN: data1[5:10][np.isfinite(data1[5:10][’Age’])]<\/li>\n<\/ul>\n<\/li>\n<li>модифицировать data frame в цикле:<\/li>\n<\/ul>\n<pre><pre class=\"e2-text-code\"><code class=\"\">for index, row in data1.iterrows():\r\n    data1.set_value(index, 'Sex', 1 if row['Sex'] == 'male' else 0)<\/code><\/pre><\/pre>\n<ul>\n<li>Возвратить массив фич, прогнав текст по массиву регулярок:<\/li>\n<\/ul>\n<pre><pre class=\"e2-text-code\"><code class=\"\">def feature_vector(text):\r\n    return map(lambda x: 1 if x.search(text) else 0, reg_arr)<\/code><\/pre><\/pre>\n<ul>\n<li><end><\/li>\n<\/ul>\n<p><b>30 января 2016 г.<\/b><\/p>\n<ul>\n<li>Сделать pycharm output шире: pandas.set_option(’display.width’, 150)<\/li>\n<li>Деление float без округления: c = a \/ float(b)<\/li>\n<li>Считать list из файла:\n<ul>\n  <li>samples = (line.decode(’utf-8’).split() for line in open(’names.txt’))<\/li>\n<\/ul>\n<\/li>\n<li>Тернарный оператор:\n<ul>\n  <li>1 if row[’Sex’] == ’male’ else 0<\/li>\n  <li>(0, 1)[row[’Sex’] == ’male’]<\/li>\n<\/ul>\n<\/li>\n<li>Проверка подстроки в строке: if ’Mrs.’ in full_name:<\/li>\n<li>boxplot <a href=\"http:\/\/blog.bharatbhole.com\/creating-boxplots-with-matplotlib\/\">http:\/\/blog.bharatbhole.com\/creating-boxplots-with-matplotlib\/<\/a>\n<ul>\n  <li><a href=\"https:\/\/gist.github.com\/nerevar\/7ef3a840844d22ba2be5\">https:\/\/gist.github.com\/nerevar\/7ef3a840844d22ba2be5<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Сортировка в массиве по количеству вхождений элементов:\n<ul>\n  <li>from collections import Counter<\/li>\n  <li>print Counter(names).most_common()<\/li>\n<\/ul>\n<\/li>\n<li><end><\/li>\n<\/ul>\n<p><b>7 февраля 2016 г.<\/b><\/p>\n<ul>\n<li>np.linspace — сгенерировать массив чисел по оси OX: x = np.linspace(0,4,100)<\/li>\n<\/ul>\n<p><b>10 февраля 2016 г.<\/b><\/p>\n<ul>\n<li>python Counter: print({k: v\/100.0 for k, v in c.items()})<\/li>\n<\/ul>\n<p><b>5 марта 2016 г.<\/b><\/p>\n<ul>\n<li>TeX\n<ul>\n  <li><a href=\"http:\/\/www.personal.ceu.hu\/tex\/cookbook.html\">http:\/\/www.personal.ceu.hu\/tex\/cookbook.html<\/a><\/li>\n  <li><a href=\"ftp:\/\/ftp.ams.org\/pub\/tex\/doc\/amsmath\/short-math-guide.pdf\">ftp:\/\/ftp.ams.org\/pub\/tex\/doc\/amsmath\/short-math-guide.pdf<\/a><\/li>\n  <li><a href=\"http:\/\/www.andy-roberts.net\/writing\/latex\/mathematics_1\">http:\/\/www.andy-roberts.net\/writing\/latex\/mathematics_1<\/a><\/li>\n<\/ul>\n<\/li>\n<li><end><\/li>\n<\/ul>\n<p><b>14 марта 2016 г.<\/b><\/p>\n<ul>\n<li>nvm: добавить exports в dotfiles; nvm install 4.3.0<\/li>\n<li>bem-xjst online demo <a href=\"https:\/\/clck.ru\/9wcz4\">https:\/\/clck.ru\/9wcz4<\/a><\/li>\n<\/ul>\n<p><b>6 May 2016<\/b><\/p>\n<ul>\n<li>Python read file to string<br \/>\nreturn open(’static\/paintings\/stub.txt’, ’r’).read()<\/li>\n<\/ul>\n<p><b>24 May 2016<\/b><\/p>\n<ul>\n<li>Python print json utf-8:<\/li>\n<li>json_dumps(data, ensure_ascii=False)<\/li>\n<\/ul>\n<p><b>25 May 2016<\/b><\/p>\n<ul>\n<li>Python Virtualenv:\n<ul>\n  <li>virtualenv mstand_venv — создать<\/li>\n  <li>source mstand_venv\/bin\/activate — активировать<\/li>\n<\/ul>\n<\/li>\n<li><end><\/li>\n<\/ul>\n<pre><pre class=\"e2-text-code\"><code class=\"\">$ virtualenv develop              # Create virtual environment\r\n$ source develop\/bin\/activate     # Change default python to virtual one\r\n(develop)$ pip install -U bottle  # Install bottle to virtual environment<\/code><\/pre><\/pre>\n<p><b>27 May 2016<\/b><\/p>\n<ul>\n<li>replace:\n<ul>\n  <li>trim_dash_regex = re.compile(r’^-’, re.IGNORECASE)<\/li>\n  <li>trim_dash_regex.sub(’’, ‘mystring’)<\/li>\n<\/ul>\n<\/li>\n<li><end><\/li>\n<\/ul>\n<p><b>29 May 2016<\/b><\/p>\n<ul>\n<li>nginx убить процесс на 80 порту:\n<ul>\n  <li>sudo fuser -k 80\/tcp<\/li>\n<\/ul>\n<\/li>\n<li><end><\/li>\n<\/ul>\n",
            "date_published": "2016-06-04T15:28:20+03:00",
            "date_modified": "2016-06-04T15:41:50+03:00",
            "tags": [
                "js",
                "python",
                "о работе",
                "яндекс"
            ],
            "_date_published_rfc2822": "Sat, 04 Jun 2016 15:28:20 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "15",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        }
    ],
    "_e2_version": 4116,
    "_e2_ua_string": "Aegea 11.2 (v4116)"
}