Search
Write a publication
Pull to refresh
56
0
Илья @WST

Инженер-программист

Send message

Многопоточность в Ruby

Reading time9 min
Views38K
Перевод главы «Multithreading» книги David Thomas и Andrew Hunt «Programming Ruby: The Pragmatic Programmers' Guide, Second Edition».

Часто самым простым способом выполнить одновременно две вещи является использование потоков в Ruby. Они являются внутрипроцессными, встроенными в интерпретатор Ruby. Это делает потоки Ruby полностью переносимыми, т.е. независимыми от операционной системы. Но в то же время вы точно не получите выгоду от использования родных, нативных потоков. Что это значит?

Вы можете столкнуться с голоданием (thread starvation — это когда поток с маленьким приоритетом не имеет шанса запуститься). Если вы хотите заблокировать ваши потоки, то со скрежетом остановится целый процесс. А если возникнет ситуация, что некоторые потоки будут посылать вызовы операционной системе, для выполнения которых требуется немалое время, то все потоки будут висеть, пока интерпретатор не получит контроль обратно. И наконец, если ваша машина имеет больше одного процессора, потоки Ruby не будут это использовать, т.к. они запускаются в одном процессе, а в одиночном родном потоке они будут вынуждены запускаться на одном процессоре единовременно.

Все это звучит страшновато. Тем не менее, на практике во многих случаях выгода от использования потоков во многом перевешивает любые потенциальные проблемы, которые могут возникнуть. Потоки Ruby являются эффективным и легким путем достижения параллельности в вашем коде. Вы просто должны понять основные проблемы реализации, и, соответственно, архитектуру.
Читать дальше →

Модули расширения Python на Rust

Reading time9 min
Views17K


“Absolute statements are the root of all evil.
The key is balance. There are no answers, only questions.”
????


Автор статьи: zolkko.
Оптимизации

Когда говорят про оптимизацию в контексте ПО, часто подразумевают оптимизацию производительности программиста и/или оптимизацию самого ПО.

Исходя из YAGNI-принципа, Python позволяет программисту сосредоточиться на реализации ПО, избавив его от необходимости заботиться о низкоуровневых вещах: регионах памяти, в которых выделяются объекты, освобождении памяти, соглашениях о вызовах.

На обратную проблему в одной из его лекций о Haskell указал Саймон Джонс. У него был слайд со стрелкой, закрашенной градиентом. В начале было написано “no types”, посередине — “Haskell”, в конце — “Coq”. Указав на Coq, он сказал: “This stresses power over usability. Right?! You need a PhD here!”[1]. Несмотря на то, что это была шутка, мантра Python — одна из любимых программистами особенностей этого языка. По моему опыту, это то, что позволяет выпускать готовый продукт несколько быстрее.
Читать дальше →

Оформляем красиво «битые» картинки

Reading time3 min
Views43K
Предлагаю вашему вниманию вольный перевод статьи "Styling Broken Images" с сайта bitsofco.de.

«Битые» картинки выглядят ужасно.

image

Но они не всегда должны так выглядеть. Мы легко можем применить CSS к элементу (тегу) img, чтобы улучшить его внешний вид — сделать его куда более привлекательнее, чем как он выглядит по умолчанию.

Если вам наскучили дефолтные уведомления о «битых» картинках, милости прошу под кат.
Читать дальше →

Использование событий MySQL на практике

Reading time3 min
Views68K
how does events workДля тех, кто активно пользуется MySQL, не секрет, что начиная с версии 5.1, MySQL поддерживает события (events). Если вам нужно выполнять запросы или отдельные процедуры по расписанию, а перейти с запуска консоли на встроенный функционал MySQL было лень не было времени,
добро пожаловать под кат

Создатель мультфильма «Крепость» представил «Последний день войны»

Reading time1 min
Views48K


Без малого три года назад Дмитрий Федотов выпустил впечатляющую работу, короткометражный мультфильм под названием «Крепость». Чтобы вспомнить о чем речь, вот сам мульт:



Сюжет таков: «Фильм притча, фантастика. Прошло 10 лет с начала последней войны. Люди постепенно выбывали из строя и автопилоты брали на себя часть их функций, вплоть до полного замещения. Теперь, когда все живое мертво, роботы продолжают бессмысленную войну в автоматическом режиме. В этом мире, гильза кассетной бомбы объемного взрыва стала крепостью для травы, а самолет стал крепостью и могилой для пилота. Любая система созданная человеком, как бы велика и совершенна она ни была, разрушится без него. Природа же — будет созидать даже на руинах».
Читать дальше →

Как делать парсинг текста голым хардвером, без процессора и без софтвера

Reading time13 min
Views39K
Кто-то парсирует текстовый файл программой на Питоне, другой пишет скрипт с регулярными выражениями на Перле, Си-программист стыдливо возится с буферами и указателями, иногда применяя Yacc и Lex.

А можно ли парсировать текст голым железом? Вообще без программы?

— А как это?, — спросил меня знакомый, — С помощью Ардуино?

— Внутри Ардуино стоит вполне фон-неймановский процессор и работает программа, — ответил я, — Нет, еще более голое железо.

— А-а-а-а, этот, микрокод?, — догадался мой товарищ и взглянул на меня победно.

— Нет, термин «микрокод» использовался для специфической организации процессоров в 1970-е годы, потом его использование сошло на нет, — ответил я и добавил, — Правда есть еще микрооперации в интеловских процессорах, в которые перекодируется x86, но это тоже другое. Нет, я имею в виду парсинг текста устройством, состоящим из логических элементов И-ИЛИ-НЕ и Д-триггерами, как на картинке ниже.

— Невозможно! — воскликнул мой приятель, — в таком устройстве где-то сбоку должен сидеть процессор и хитро подмигивать!

— Почему это невозможно?, — парировал я, — Вот машину Тьюринга знаешь? Парсирует текст на ленте, а сбоку никакие интелы и ардуино не подмигивают.

— Нуу, машина Тьюринга, — протянул приятель, — это абстракция, типа Демона Максвелла.

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

mfp_srec_parser_fragment
Читать дальше →

Делаем дом умным вместе с Xiaomi

Reading time4 min
Views42K
Компания Xiaomi была основана семью партнёрами 6 июня 2010 года, это очень молодая компания, которая смогла стать третьим производителем смартфонов в мире всего за несколько лет. Смартфоны Xiaomi делает так, что дешевле без ущерба к качеству уже не бывает. Но это не весь бизнес компании: значимую часть продукции занимают устройства для умного дома.

О воздухоочистителе, фильтре для воды, наборе безопасности с сенсорами тела и закрытия окон и дверей, тонометре и других домашних гаджетах от Xiaomi — читайте под катом.

Лампа Xiaomi


image
Читать дальше →

Снова про STL: контейнеры

Reading time7 min
Views52K
В предыдущей заметке речь шла о массивах как прототипе и прародителе контейнеров. Теперь дошла очередь до собственно контейнерных классов и поддерживающих их библиотек.

Под термином библиотека стандартных шаблонов (STL, Standard Template Library) понимают набор интерфейсов и компонентов, первоначально разработанных Александром Степановым, Менг Ли и другими сотрудниками AT&T Bell Laboratories и Hewlett-Packard Research Laboratories в начале 90-х годов (хотя и позже ещё весьма многие приложили руку к тому, что стало на сегодня стандартным компонентом C++). Далее библиотека STL перешла в собственность компании SGI, а также была включена как компонент в набор библиотек Boost. И наконец библиотека STL вошла в стандарты C++ 1998 и 2003 годов (ISO/IEC 14882:1998 и ISO/IEC 14882:2003) и с тех пор считается одной из составных частей стандартной библиотек C++.

Стандарт не называет эту часть библиотеки STL, но эту хронологию хорошо бы учитывать, разбираясь с какой версией компилятора, языка и литературы вы имеете дело — в процессе сокращения HP STL до размеров, подходящих для стандартизации, часть алгоритмов и функторов выпали из состава библиотеки, а кое-что, со временем, и добавляется (например, расширение набора переопределенных прототипов некоторых методов контейнеров). По тексту будет использоваться традиционное название STL только чтобы было ясно какую часть стандартной библиотеки C++ мы имеем в виду.
Читать дальше →

Доллар

Reading time5 min
Views82K


Последние два года вся страна пристально следит за курсом доллара. Новостные выпуски пестрят громкими репортажами о долларе. Все говорят о долларе. А что, если мы на фоне горячего интереса, разберемся с тем, как формируется цена доллара, посмотрим кто и как торгует валютой?! Все результаты, представленные в данной статье, получены на основе официальных торговых данных full orders log (полный журнал заявок), купленные на Московской Бирже. Мы покажем реальные торги изнутри. Параллельно, познакомимся со стандартными методами анализа рынка. Такая аналитика стоит не малых денег и её могут позволить ограниченное число «компаний».

Инструментом для анализа данных будет Java. Анализируемый биржевой инструмент — USDRUB_TOM. Наша задача вытащить любопытные детали из имеющихся данных и попробовать сделать определенные выводы.
Читать дальше →

Разговор на понятном языке

Reading time7 min
Views16K


Всем привет! Сегодня хотел бы поделиться с вами небольшой историей, которая должна (во всяком случае, я надеюсь) ещё раз обратить внимание на вопрос допустимости использования профессионализмов и специфических технических терминов при разговоре с людьми.
Читать дальше →

Как быть, когда запутался в текстурах

Reading time8 min
Views19K
Советов новичкам про то, как начать карьеру дизайнера, в интернете масса. Гораздо интереснее становится, когда понимаешь, что уже не готов просто рисовать картинки. Наш бывший коллега Павел Батурин, который 2,5 года работал в AT Consulting на проекте «Электронное правительство», рассказал, почему важно уметь продавать свою работу, как с нуля организовать отдел и поделился другими практическими советами, которые помогут тем, кто достиг потолка в дизайнерской профессии.


Читать дальше →

Segmentation Fault (распределение памяти компьютера)

Reading time16 min
Views120K


Когда я делаю ошибку в коде, то обычно это приводит к появлению сообщения “segmentation fault”, зачастую сокращённого до “segfault”. И тут же мои коллеги и руководство приходят ко мне: «Ха! У нас тут для тебя есть segfault для исправления!» — «Ну да, виноват», — обычно отвечаю я. Но многие ли из вас знают, что на самом деле означает ошибка “segmentation fault”?

Чтобы ответить на этот вопрос, нам нужно вернуться в далёкие 1960-е. Я хочу объяснить, как работает компьютер, а точнее — как в современных компьютерах осуществляется доступ к памяти. Это поможет понять, откуда же берётся это странное сообщение об ошибке.

Вся представленная ниже информация — основы компьютерной архитектуры. И без нужды я не буду сильно углубляться в эту область. Также я буду применять всем известную терминологию, так что мой пост будет понятен всем, кто не совсем на «вы» с вычислительной техникой. Если же вы захотите изучить вопрос работы с памятью подробнее, то можете обратиться к многочисленной доступной литературе. А заодно не забудьте покопаться в исходном коде ядра какой-нибудь ОС, например, Linux. Я не буду излагать здесь историю вычислительной техники, некоторые вещи не будут освещаться, а некоторые сильно упрощены.
Читать дальше →

Учимся писать многопоточные и многопроцессные приложения на Python

Reading time6 min
Views421K
Эта статья не для матёрых укротителей Python’а, для которых распутать этот клубок змей — детская забава, а скорее поверхностный обзор многопоточных возможностей для недавно подсевших на питон.

К сожалению по теме многопоточности в Python не так уж много материала на русском языке, а питонеры, которые ничего не слышали, например, про GIL, мне стали попадаться с завидной регулярностью. В этой статье я постараюсь описать самые основные возможности многопоточного питона, расскажу что же такое GIL и как с ним (или без него) жить и многое другое.
Читать дальше →

Сказ о том, как Медведев-хакер сумел зайти на заблокированный rutracker

Reading time2 min
Views47K
image

Медведев, наш премьер-министр,
На заседаньи по кино,
Сидел, моргал себе небыстро…
Ему не нравилось оно.

Светило солнце за окошком,
Свистел чего-то воробей.
И где-то птицы понемножку
Несчастных мучили свиней.

Он слушал Константина Эрнста,
Который чуть ли не кричал;
Не находил себе он места,
И резал правду сгоряча.

— Доколе,- говорит,- пиратов
Мы будем тут ещё терпеть!
У нас ведь символ не тюлени.
Россия — это же медведь!

— Нам к битве с интернет-пиратством
Серьёзней нужно подойти!
Конечно, без рукоприкладства,
Но и виновных чтоб найти.
Читать дальше →

Смартфоны Xiaomi Mi4, Mi4i, Mi4c — чем отличаются?

Reading time3 min
Views64K
Когда мы обсуждаем айфоны, то не вызывает особых трудностей вспомнить и понять отличие iPhone 5 от iPhone 5s или от iPhone 5с. Полагаю тут заслуга в том, что их презентуют громко и сильно выставляют преимущества каждой из версий. Видимо парни из Xiaomi хотели сделать что-то подобное, только вот либо про громкую презентацию в России забыли или ещё что-то, но для рядового россиянина разница между ними совсем не очевидна, хотя при рассмотрении она заметна невооружённым глазом.

image

Я составил наглядную табличку, чтобы в этом вопросе можно было разобраться быстро и окончательно.
Читать дальше →

Как покрасить вкладку Chrome

Reading time1 min
Views91K
image

Если вы заходили с мобильного хрома в фейсбук, то наверняка видели, что интерфейс браузера красится в фирменный синий цвет соцсети. Но зачем и как?
Читать дальше →

10 привычек довольного node.js разработчика

Reading time6 min
Views65K


К концу 2015 года в распоряжении JavaScript разработчиков образовалось огромное количество инструментов. В этой экосистеме легко потеряться, поэтому успешные команды следуют выработанным правилам, которые позволяют не терять время и сохранять здоровье проектов. Под катом перевод статьи 2016 года от команды Heroku, в которой они рассказывают о десяти привычках веб разработчиков, у которых все работает и ничего не болит. Скорее всего 80% написанного вы уже знаете – тем интереснее вам будет прочитать об оставшихся двух приемах!
Читать дальше →

Экскурсия по дата-центру «Цветочная 2»

Reading time8 min
Views20K
image
 
Среди всех событий прошлого года больше всего нам запомнилось открытие нового — самого большого в сети Selectel — дата-центра в Санкт-Петербурге. Это открытие стало значительной вехой не только в истории компании, но и города. Церемонию открытия дата-центра 17 декабря 2015 года посетил губернатор Петербурга Георгий Полтавченко.
Прогуляться по дата-центру

Information

Rating
Does not participate
Location
Красногвардейское, Адыгея, Россия
Date of birth
Registered
Activity