Pull to refresh
1
0
Андрей Жуковский @jimpanzer

User

Send message

Python изнутри. Структуры процесса

Reading time7 min
Views21K
1. Введение
2. Объекты. Голова
3. Объекты. Хвост
4. Структуры процесса

Продолжаем перевод цикла статей о внутренностях Питона. Если вы хоть раз задавались вопросом «а как же оно устроено?», обязательно читайте. Автор проливает свет на многие интересные и важные аспекты устройства языка.

В предыдущих частях мы говорили об объектной системе Питона. Тема ещё не исчерпана, но давайте пойдём дальше.

Когда я размышляю о реализации Питона, я представляю себе огромный конвейер, по которому движутся коды машинных операций, которые затем попадают в гигантский завод, где повсюду возвышаются градирни и башенные краны, — и меня просто переполняет желание подойти поближе. В этой части мы поговорим о структурах состояния интерпретатора и состояния потока (./Python/pystate.c). Сейчас нам нужно заложить фундамент, чтобы потом было легче понять, как исполняется байткод. Совсем скоро мы узнаем, как устроены фреймы, пространства имён и объекты кода. Но для начала давайте поговорим о тех структурах данных, которые связывают всё воедино. Учтите, я предполагаю наличие хотя бы поверхностного понимания устройства операционных систем и знания хотя бы таких терминов, как ядро, процесс, поток и т. п.

Во многих операционных системах пользовательский код исполняется в потоках, которые живут в процессах (это верно для большинства *nix-систем и для «современных» версий Windows). Ядро ответственно за подготовку и удаление процессов и потоков, а также за определение того, какой поток на каком логическом CPU будет исполняться. Когда процесс вызывает функцию Py_Initialize, на сцену выходит другая абстракция, интерпретатор. Любой Python-код, запускаемый в процессе, привязан к интерпретатору. Об интерпретаторе можно думать как об основе всех прочих концепций, которые мы будем обсуждать. Питон поддерживает инициализацию двух (и более) интерпретаторов в одном процессе. Несмотря на то, что эта возможность редко используется на практике, я буду её учитывать. Как было сказано, код исполняется в потоке (или потоках). Не исключение и виртуальная машина Питона (VM). При этом сама VM имеет поддержку потоков, т.е. у Питона есть своя абстракция для представления потоков. Реализация этой абстракции полностью полагается на механизмы ядра. Таким образом, и ядро, и Питон имеют представление о каждом из Python-потоков. Эти потоки управляются ядром и исполняются как отдельные потоки параллельно всем прочим потокам в системе. Ну… почти параллельно.

До сих пор мы не обращали внимания на слона в нашей посудной лавке.
Читать дальше →
Total votes 29: ↑28 and ↓1+27
Comments11

Переводим ActionBar на следующий уровень

Reading time9 min
Views37K
Еще в ноябре 2012 года, я написал сообщение в блоге озаглавленное как "ActionBar в движении". Эта статья в основном касалась методики того, как красиво и уникально оживить ваш ActionBar . Хотя я упомянул некоторые из возможностей применения данного эффекта, я никогда не имел времени, чтобы добавить данный вид анимации ActionBar к какому-либо из моих собственных приложений. Но я видел в Play Store приложение использовавшее его.

Будучи на Google I/O, я наконец нашел приложение, использующее в ActionBar технику анимации. Давайте будем честными, это буквально взорвало мой взгляд когда я в первый раз это увидел. Я влюбился в хороший, тонкий и чрезвычайно полезный анимационный эффект, и, вероятно, даже больше, чем в само приложение! Я уверен, вы знаете приложение о котором я говорю, так как оно было представлено во время Google I/O. Это приложение Play Music!

Последнее обновление Play Music (v5.0) претерпело полный редизайн и внешний вид страниц с описанием исполнителя и альбома. Если вы откроете такую страницу, то вы заметите, что ActionBar изначально невидим и наслаивается на большое изображение, описывающее исполнителя или альбом. Но как только вы начинаете прокручивать страницу вниз (если это возможно), то ActionBar постепенно проявляется. ActionBar оказывается полностью непрозрачным, когда изображение становится прокрученным за экран.
Читать далее
Total votes 30: ↑26 and ↓4+22
Comments6

ZBase32, Base32 и Base64 алгоритмы кодирования

Reading time4 min
Views46K
Привет!

Многие используют Base64 кодирование, реже Base32 и еще реже ZBase32 (вы знаете о таком?), но не все понимают их алгоритмы. В статье я описываю достоинства, недостатки данных кодировок, а также рассказываю о их реализации.
Читать дальше →
Total votes 44: ↑38 and ↓6+32
Comments26

Python изнутри. Введение

Reading time7 min
Views99K
Boa constrictor1. Введение
2. Объекты. Голова
3. Объекты. Хвост
4. Структуры процесса

Помимо изучения стандартной библиотеки, всегда интересно, а иногда и полезно, знать, как язык устроен изнутри. Андрей Светлов (svetlov), один из разработчиков Python, советует всем интересующимся серию статей об устройстве CPython. Представляю вам перевод первого эпизода.

Мой друг однажды сказал мне: «Знаешь, для некоторых людей язык C — это просто набор макросов, который разворачивается в ассемблерные инструкции». Это было давно (для всезнаек: да, ещё до появления LLVM), но эти слова хорошо мне запомнились. Может быть, когда Керниган и Ритчи смотрят на C-программу, они на самом деле видят ассемблерный код? А Тим Бёрнерс-Ли? Может он сёрфит интернет по-другому, не так, как мы? И что, в конце концов, Киану Ривз видел в том жутком зелёном месиве? Нет, правда, что, чёрт побери, он там видел?! Эм… вернёмся к программам. Что видит Гвидо ван Россум, когда читает программы на Python?
Узнать ответ
Total votes 98: ↑93 and ↓5+88
Comments60

«Краник», или алгоритм для поиска цифр числа Пи

Reading time5 min
Views36K
Привет, Хабр! Недавно столкнулся с задачей подсчёта числа Пи до знака, номер которого будет выбирать пользователь. Сразу полез на Википедию, почитать, что за зверь такой, это Пи, и как его находить с заданной точностью. Формул, описывающих число Пи, уйма. Но для решения моей задачи всё в этих формулах упирается либо в точность и длину базовых типов языка (я выбрал Java), либо (для решения предыдущей проблемы) в длинную арифметику, которую мне реализовывать не очень-то хотелось.
Читать далее
Total votes 31: ↑28 and ↓3+25
Comments23

ASP.NET MVC. Урок 0. Вступление

Reading time2 min
Views782K
Я пишу сайты на asp.net mvc. В этих 16 главах я хочу рассказать, как я это делаю. Это некий учебник-справочник всех тех знаний, которые я накопил в течение трех лет.

Почему именно asp.net mvc

ASP.NET MVC я люблю потому что:
  • Это .net. Я знаю .net и С#.
  • Это компилируемый код.
  • Это не ASP.NET WebForms, я работаю с html-кодом.
  • Используется MVC-паттерн.
  • Visual Studio – самое популярное средство разработки, в котором есть IntelliSense.
  • Отличные инструменты отладки.


Читать дальше →
Total votes 290: ↑215 and ↓75+140
Comments67

CSS-маски для hover-эффекта

Reading time4 min
Views71K


На многих сайтах-портфолио работы представлены в виде небольших картинок-миниатюр с приятными hover-эффектами. В этой статье будет рассказано о способе сделать такой эффект, используя CSS-маски. Работает только в современных браузерах, но к счастью и в старых верстка выглядит корректно и не съезжает.
Читать дальше →
Total votes 58: ↑54 and ↓4+50
Comments11

Создаем резюме на LaTeX — как и зачем?

Reading time5 min
Views90K
Многие документы я подготавливаю в LaTeX, а не в Word. И к моменту, когда я определяюсь со следующим местом работы, я подвожу итоги сделанного, и, уж чтобы не пропадало, фиксирую их в документах, составляющих каркас моего CV. По моему личному убеждению, тщательность в создании документов для будущего работодателя нужна не столько для коммуникаций с «эйчарами», сколько для осмысления дороги, по которой идешь, и направления, в котором решаешь двигаться дальше. Итак, почему я для резюме выбрал LaTeX?

Читать дальше →
Total votes 125: ↑99 and ↓26+73
Comments71

Как работают браузеры: принципы работы современных веб-браузеров

Reading time2 min
Views189K
Просматривая одно из обучающих видео "Школы разработки интерфейсов" Яндекса, наткнулся на ссылку на офигенный труд израильской веб-программистки Тали Гарсиэль (Tali Garsiel) "How browsers work" (Как работают браузеры).

Она в течение нескольких лет отслеживала всю издаваемую информацию о внутреннем устройстве браузеров, изучала исходный код WebKit и Gecko и, в конце концов, собрала все воедино. Вот что пишет сама Тали:
Когда на 90% компьютеров был установлен IE, приходилось мириться с тем, что это загадочный «черный ящик», однако теперь, когда более половины пользователей выбирает браузеры с открытым исходным кодом, пришло время разобраться, что скрывается у них внутри, в миллионах строк программного кода на C++...
Пролистав, я был поражен — отличная работа. Внутреннее устройство браузеров, алгоритмы разбора — все хорошо иллюстрировано, доступно и понятно. И без излишних подробностей, страниц на 30-40. Как раз то, что нужно. Решил — это надо обязательно перевести. Покопался еще немного — оказалось перевод уже как 1,5 года есть!

Возможно для кого-то это давно уже не новость, но, надеюсь, для тех, кто не слышал, будет полезно (на хабре упоминаний не нашел).

Под катом содержание перевода, чтобы решить стоит ли читать.
Читать дальше →
Total votes 200: ↑179 and ↓21+158
Comments27

Несколько вопросов по .NET и C# (ответы с разбором)

Reading time4 min
Views132K
На минувших выходных я запустил пост «Несколько вопросов по .NET и C#»

Я думаю многим интересно не только найти правильные ответы, но и узнать какая часть пользователей знает эти правильные ответы. Именно с этой целью и создавался этот пост.

Я не настаиваю на истинности объяснений в последней инстанции, поэтому конструктивная критика, дополнения и уточнения приветствуются.



Обещанные ответы с разбором под катом.

Читать дальше →
Total votes 48: ↑42 and ↓6+36
Comments37

Интеграция дизайна мобильных приложений. Часть 2: iOS, Windows Phone

Reading time3 min
Views42K


Это вторая часть доклада, который я прочитал на Dribbble Meetup 2013 в Москве. В первой части я подробно описал свой процесс интеграции дизайна под платформу Android. Эта часть — про интеграцию дизайна под iOS и Windows Phone, а также я вскользь упомяну про Samsung Bada 2.0. Дальше — много картинок.

Читать дальше →
Total votes 30: ↑25 and ↓5+20
Comments11

Гигапиксельная панорама Марса от Curiosity

Reading time1 min
Views30K


Марсоход Curiosity продолжает делать свою работу независимо от того, пишут о нем на Хабре, или нет. Однако, эта работа настолько интересна, что не писать о ней просто невозможно. К примеру, сейчас NASA выложила в Сеть гигапиксельную панораму Марса, которую собрали из нескольких сотен (более 800) различных снимков.

Читать дальше →
Total votes 36: ↑33 and ↓3+30
Comments17

На TechDays.ru опубликованы видео докладов DevCon 2013 и записи интервью участников

Reading time5 min
Views9.4K
image
 
29-30 мая в Подмосковье, в традиционном загородном формате, прошла крупная конференция для разработчиков и тестировщиков ПО – DevCon 2013. Вы можете посмотреть отчетный ролик о конференции на TechDays.ru и еще раз погрузиться в воспоминания о том, как это было, быть может, вы даже найдете там себя или своих друзей.
В течение двух дней конференции каждый участник имел возможность:
  • Выбрать для посещения доклады из шести параллельно идущих треков (более чем 60 технологических сессий)
  • Изучить технологии на практике, приняв участие в различных мастер классах, тематических круглых столах
  • Прямо на DevCon, написать своё приложение под платформу Windows на «Night of Coding» (Ночь кодирования)
  • Посетить экспертные зоны и выставки решений партнеров Microsoft
  • В неформальной обстановки обсудить с коллегами и экспертами вопросы будущего технологий разработки
  • У тех, кто не смог присутствовать на конференции лично, была возможность увидеть все основные технологические доклады программы в режиме online.

Если вы не смогли присутствовать на конференции лично и пропустили трансляцию докладов, то теперь у вас есть возможность не только посмотреть все доклады онлайн, но и скачать их вместе с презентациями докладчиков на видео-портале TechDays.ru.
Там же уже опубликованы запись пленарного доклада, который вели Йонас Перссон, Джейсон Зандер и Александр Ложечкин, и видео докладов по восьми oсновным направлениям конференции – Visual Studio, Windows Azure, Windows 8, Windows Phone, корпоративная разработка, эффективная разработка приложений, командная разработка  и ALM. Кроме того, там также доступны записи всех интервью с участниками DevCon 2013.
Читать дальше →
Total votes 25: ↑19 and ↓6+13
Comments5

Книги, видео и другие материалы по разработке под iOS

Reading time4 min
Views114K
«Хочу программировать под iPhone — говори, что почитать...»
Любимая девушка


Когда решаешься заняться разработкой под iOS, то трудно выбрать литературу и ресурсы, которые действительно были бы полезны. Хорошо еще, что Apple предоставляет множество учебных материалов и программ с открытым исходным кодом в своем центре для разработчиков. В остальных книжках можно если и не утонуть, то порядочно захлебнуться. Сейчас я жалею, что потратил время на пару «мануалов». Не буду делать им антирекламу, а лучше порекомендую хорошие материалы по программированию под iOS.

Под катом книги, видеокурсы и блоги, которые будет полезно прочитать/посмотреть.
Читать дальше →
Total votes 105: ↑99 and ↓6+93
Comments58

Физики научились терять в дифракционных карманах до 46% трафика

Reading time2 min
Views45K


В 2011 году группа американских физиков впервые продемонстрировала эффект «дифракционного» или «временнóго» кармана (temporal cloaking) в волноводных коаксильных лазерах. Теперь их коллеги из университета Пердью существенно усовершенствовали технологию и смогли спрятать туда до 46% передаваемой информации: в скрытом режиме по оптоволокну они транслировали поток 12,7 Гбита/с.
Читать дальше →
Total votes 103: ↑71 and ↓32+39
Comments58

Новая технология шумоподавления позволяет передать 400 Гб/сек по оптоволокну на 12 800 км без повторителей сигнала

Reading time2 min
Views32K
Учёные из Bell labs разработали и протестировали новый способ борьбы с шумом и искажениями при передаче оптического сигнала. Они продемонстрировали эффективную скорость передачи данных на уровне 400 Гб/сек на расстояние 12 800 километров. Принцип работы системы шумоподавления напоминает давно используемое в аудиотехнике балансное (симметричное) подключение — сигнал разделяется на две части, одна из них передаётся как обычно, а вторая — в противофазе. На принимающей стороне вторая часть снова переворачивается и складывается с первой. В результате искажения и помехи, попавшие в оба сигнала, взаимно уничтожаются, а сам сигнал усиливается на 6 дБ:


Читать дальше →
Total votes 60: ↑57 and ↓3+54
Comments38

ImageControl с показом ProgressRing для Win 8/RT

Reading time6 min
Views5.3K

Зачем?


В любом Windows 8/RT приложении требуется отображать определенное количество графики. Ресурсы можно черпать повсеместно: напрямую из Web и постоянно выкачивать файлы; единожды получив файлы работать с ними через IsolatedStorage и так далее. Все хорошо до того момента, пока загрузка этой графики не начинает занимать продолжительное время (даже секунда это много). В этот момент требуется визуально «обнадежить» пользователя, и занять пустое место, на котором через мгновение появится изображение. Тут нам на помощь приходит ProgressRing и, естественно, удобнее всего написать один раз контрол и забыть об это надолго.

Читать дальше →
Total votes 26: ↑19 and ↓7+12
Comments12

Пишем свой Watermark TextBox и PasswordBox для Win8/RT, Windows Phone

Reading time7 min
Views3.9K

Сабж


На самом деле очень тревиальная задача, но, столкнувшись с которой, можно потерять драгоценное время.
Итак, что мы имеем:
WinRT XAML Toolkit несет на своем борту Watermark TextBox, но имеет ограниченый функционал (цветовое оформление Watermarkа). Вдобавок отсутсвие Watermark PasswordBox огорчает.
Следуйщий текст позволит Вам сэкономить 30 минут времении, имплементировав и настроив парочку простеньких контролов). Если интересно — добро пожаловать под кат.
Читать дальше →
Total votes 12: ↑9 and ↓3+6
Comments7

Ресурсы, о которых должен знать каждый Android-разработчик

Reading time6 min
Views189K
Сегодня я хочу поделиться с вами моим вольным переводом статьи, написанной Сергеем Повзнером (Sergey Povzner). Сергей ведёт блог bongizmo.com и занимается разработкой туристических гидов под общим названием Citybot.

В то время как Android продолжает свой невероятный рост, всё больше и больше программистов начинают разрабатывать приложения на этой платформе. Если ты начинаешь свой путь сегодня, то ты определенно — счастливчик. За последние годы Android значительно повзрослел и избавился от множества детских болезней. Информации по платформе более чем достаточно. Я же расскажу о самых важных ресурсах.

Статья будет полезна как новичкам, так и опытным разработчикам. Это гид по миру Android-разработки.
Читать дальше →
Total votes 133: ↑128 and ↓5+123
Comments33

Information

Rating
Does not participate
Location
Минск, Минская обл., Беларусь
Registered
Activity