Search
Write a publication
Pull to refresh
7
0
Маслов Александр @drakmail

SRE

Send message

Как работает GIL в Ruby. Часть 1

Reading time6 min
Views24K
Пять из четырех разработчиков признают, что многопоточное программирование понять непросто.

Большую часть времени, что я провел в Ruby-сообществе, печально известная GIL оставалась для меня темной лошадкой. В этой статье я расскажу о том, как наконец познакомился с GIL поближе.

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

Я хотел знать, как работает GIL с технической точки зрения. На GIL нет ни спецификации, ни документации. По сути, это особенность MRI (Matz's Ruby Implementation). Команда разработчиков MRI ничего не говорит по поводу того, как GIL работает и что гарантирует.

Впрочем, я забегаю вперед.
Читать дальше →

1С-Битрикс — CMS от маркетологов. Плюсы и минусы

Reading time10 min
Views88K
Всем привет. Это мой первый пост на хабре. Поэтому представлюсь для проформы. Веб-разработчик. Опыт 3,5 года. В настоящий момент — состоявшийся битриксоид. Занимаюсь всем — поддержкой крупных проектов, собственной разработкой, консультацией в вопросах маркетинга, обзором возможностей новых версий, нюансами интеграции сайта с 1С на стороне оной, написанием модулей для marketplace, внедрением бизнес-процессов в «Корпоративный портал». И многим другим. В рамках отдельно взятой CMS. К счастью ли, к сожалению ли (в статье об этом и пойдет речь) — без работы остаться невозможно. Рынок наполнен продуктами от 1С-Битрикс более, чем наполовину.

В статье речь пойдет о плюсах и минусах этой монополии. А в том, что тенденции для этой монополии есть — лично у меня никаких сомнений.
Читать дальше →

Node.JS и выгрузка каталога из 1С на сайт

Reading time4 min
Views37K
На днях закрыли очередной проект. Суть: создание новой версии интернет-каталога. Старая версия сайта, в силу ряда причин, клиента не устраивала. Особенностью проекта была его номенклатурная база. Объём номенклатуры каталога составлял ~26000 позиций раскиданных по дереву из 513 узлов + характеристики товара. Почти каждая номенклатурная позиция имела описание на 1-2К текста.

Файл выгрузки каталога в формате ComerceML 2 для старого сайта весил 104 MB. Формировался на стороне 1С 10 минут и после передачи на хостинг, парсился на стороне сайта полтора часа (!) со 100% загрузкой CPU.
Вот с этими полутора часами нам надо было что-то делать.

Абсолютное горизонтальное и вертикальное центрирование

Reading time5 min
Views317K
Сколько уже было сломано копий о задачу выравнивания элементов на странице. Предлагаю вашему вниманию перевод отличной статьи с решением этой проблемы от Стефана Шоу (Stephen Shaw) для Smashing Magazine — Absolute Horizontal And Vertical Centering In CSS.

Все мы знали о margin: 0 auto; для горизонтального центрирования, но margin: auto; не работало для вертикального. Это можно легко исправить, просто задав высоту и применив следующие стили:

.Absolute-Center {
  margin: auto;
  position: absolute;
  top: 0; left: 0; bottom: 0; right: 0;
}

Я не первый, кто предложил это решение, однако такой подход редко применяется при вертикальном выравнивании. В комментариях к статье How to Center Anything With CSS Simon ссылается на пример jsFiddle, где приводится отличное решение для вертикального центрирования. Вот еще несколько источников на эту тему.

Рассмотрим способ поближе.
Читать дальше →

Петиции, требующие запретить игру «Company of Heroes-2» в СНГ, набрали около 15 тысяч подписей

Reading time5 min
Views132K
25 июня 2013 года на мировом и российском рынках появилась долгожданная новинка — компьютерная игра «Company of Heroes 2» от канадской студии Relic (ныне выкупленной фирмой SEGA).На тот момент никто и не предполагал, какой ажиотаж вызовет игра и что по какой причине это произойдёт. Спустя месяц после её выхода в сети сначала появился разоблачающий видеообзор от BadComedian, а следом одна за другой возникли две петиций от возмущенных пользователей с требованием запретить данный продукт на территории РФ:

Каждое из этих обращений уже подписали более 14 тысяч человек (петицию к 1С — 18.5 тысяч), и их инициаторы не намерены останавливаться на достигнутом.Поводом для столь кардинальных решений послужило содержание игры, с которым очень много игроков совершенно не согласны.
Читать дальше →

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

Reading time5 min
Views38K
Привет, Хабр! Недавно столкнулся с задачей подсчёта числа Пи до знака, номер которого будет выбирать пользователь. Сразу полез на Википедию, почитать, что за зверь такой, это Пи, и как его находить с заданной точностью. Формул, описывающих число Пи, уйма. Но для решения моей задачи всё в этих формулах упирается либо в точность и длину базовых типов языка (я выбрал Java), либо (для решения предыдущей проблемы) в длинную арифметику, которую мне реализовывать не очень-то хотелось.
Читать далее

Apache Mahout. Метрики для определения схожести пользователей

Reading time4 min
Views12K
Привет.
Читаю книгу Mahout in Action. Столкнулся с эффектом “смотрю в книгу – вижу фигу”. Для его устранения решил конспектировать.


Apache Mahout – это библиотека для работы с алгоритмами машинного обучения, которая может быть использована как надстройка к Hadoop или самостоятельно. В библиотеке реализованы методы коллаборативной фильтрации, кластеризации и классификации.

Рассматриваем рекомендательную систему на основе коллаборатвной фильтрации. Она может быть пользователе-ориентированной (user-based) или свойство-ориентированной (item-based).
Коллаборативная фильтрация — это один из методов построения прогнозов, использующий известные предпочтения (оценки) группы пользователей для прогнозирования неизвестных предпочтений другого пользователя. Его основное допущение состоит в следующем: те, кто одинаково оценивали какие-либо предметы в прошлом, склонны давать похожие оценки другим предметам и в будущем. (из википедии)

Одно из основных понятий пользователе-ориентированных рекомендательных систем это метрика для определения схожести пользователей. Предположим что мы имеем данные по просмотрам и оценкам фильмов разными пользователями. Будем сравнивать двух пользователей: X и Y. Они выставили оценки фильмам X(x1, x2, ..., xn) и Y(y1, y2, ..., ym), где n, m – количество оценок поставленных первым и вторым пользователем соответственно. N – количество оценок, которые были поставленны обоими пользователями одним и тем же фильмам (пересечение множеств фильмов посмотренных первым и вторым). Будем считать что (xi, yi) – это пара оценок выставленная пользователями одному фильму.
В Mahout реализованы метрики на основании нескольких алгоритмов. Описываю сами алгоритмы, а не их реализации в Mahout.

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

SEO-мифы

Reading time5 min
Views31K
Одно из самых важных правил пиара — не затрагивать негатив в собственном контенте. Это просто увеличит количество контактов аудитории с вредной информацией. А оправдаться практически невозможно: даже самые сильные аргументы воспримет лишь небольшой процент рациональных людей, нацеленных на получение беспристрастной информации и формирование адекватной картины реальности. Но у большинства просто «остается осадочек». Следовательно, правильная стратегия для политика такова: если его очерняет конкретными (пусть и выдуманными) фактами конкретный человек в конкретном месте, не нужно давать на него ссылку и писать: «Посмотрите, какая ерунда! На самом деле все не так, и вот почему...» Наоборот, необходимо либо игнорировать нападки, либо расплывчато упомянуть о них: мол, «враг не дремлет, продуцирует безумие, но я продолжу спасать мир»…

Но мы не политики и не боимся обсуждать поисковое продвижение. Потому что у SeoPult есть обезоруживающая статистика — 290 000 сайтов успешно привлекают посетителей с нашей помощью. Высокий ROI поискового продвижения — это возможность для огромного количества мелких и средних бизнесов успешно работать и приносить прибыль, создавать рабочие места.

Все вышесказанное призвано еще раз опровергнуть первый и главный SEO-миф: продвижение — это что-то плохое (в последнее время люди уже, правда, затрудняются привести актуальные доводы в пользу этой точки зрения). Сомневающихся отсылаем к нашей статье «Апология SEO», а тут продолжим обсуждать конкретные заблуждения вебмастеров и владельцев сайтов.

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

Новое для веб-дизайнера за июль 2013

Reading time2 min
Views35K
Новые полезные инструменты, сервисы, статьи, бесплатности для веб-дизайнеров за июль 2013. Остальные подборки доступны по тегу "новое для веб-дизайнера".

Сервисы




I Want To Use — на сайте можно выбрать CSS-фичи, которые хотите использовать, и будет показан процент пользователей, которые смогут их использовать.
Читать дальше →

Курс лекций «Стартап». Питер Тиль. Стенфорд 2012. Занятие 17

Reading time25 min
Views51K

Весной 2012 г., Питер Тиль (Peter Thiel), один из основателей PayPal и первый инвестор FaceBook, провел курс в Стенфорде — «Стартап». Перед началом Тиль заявил: «Если я сделаю свою работу правильно, это будет последний предмет, который вам придется изучать».

Один из студентов лекции записывал и выложил транскипт. В данном хабратопике barfuss, переводит семнадцатое занятие, редактор astropilot.

Занятие 1: Вызов будущего
Занятие 2: Снова как в 1999?
Занятие 3: Системы ценностей
Занятие 4: Преимущество последнего хода
Занятие 5: Механика мафии
Занятие 6: Закон Тиля
Занятие 7: Следуйте за деньгами
Занятие 8: Презентация идеи (питч)
Занятие 9: Все готово, а придут ли они?
Занятие 10: После Web 2.0
Занятие 11: Секреты
Занятие 12: Война и мир
Занятие 13: Вы — не лотерейный билет
Занятие 14: Экология как мировоззрение
Занятие 15: Назад в будущее
Занятие 16: Разбираясь в себе
Занятие 17: Глубокие мысли
Занятие 18: Основатель — жертва или бог
Занятие 19: Стагнация или сингулярность?
Читать дальше →

JavaScript обработка изображений нативными функциями

Reading time2 min
Views29K

Доброго времени суток, читатель!


Как-то понадобилась мне в проекте, работающем на node.js, обработка изображений. И чтоб скачал файлик, закинул в папку и подключил как модуль. Ан нет, таких в природе не оказалось. По этому тогда пришлось воспользоваться node-imagemagick. Но сейчас пост не о этой библиотеке.

Пост о том, что захотелось сделать такую библиотеку, которую скачал, закинул файлик в проект, подключил модуль и всё работает! Ну и сделал. Правда поддержка gif'ок не реализована, но я надеюсь на огромное сообщество, которое заинтересуется и поможет доделать библиотеку.

Назвал её по простому, imageLib.js, и на github выложил, правда под MIT.
Читать дальше →

Пока Vim пишет код за Вас…

Reading time3 min
Views29K


Не буду долго распинаться на тему того, насколько велик и могуч Vim — это уже давно и достоверно известно. Кто-то даже утверждает, что «Практически любая строка латинских букв является синтаксически верной командой для vi».

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

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

Стратегия продукта подразумевает ответ — «Нет!»

Reading time6 min
Views30K
Перевод оригинальной статьи за авторством Des Traynor

Если вы создаете какой-то продукт, вы должны в совершенстве уметь говорить “нет”. Не “может быть” или “позже”, а именно нет. Во время создания продукта не нужно включать в него опций, которые теоретически могут принести пользу, но имеют к нему косвенное отношение, ведь это помешает точно определить параметры продукта и его направленность.



Как следует из последней рекламы Apple, могут существовать десятки тысяч версий вашего продукта, которые могут появляться из-за разных фич, важных и неважных. Большинство из этих версий с треском провалятся и только лучшие смогут обслужить рынок.
Читать дальше →

Подборка полезного для любителей Twitter Bootstrap

Reading time1 min
Views83K
В подборке инструменты, плагины и другие полезности, облегчающие работу с Twitter Bootstrap. Предыдущая подборка.

Инструменты




Bootstraptor — подборка большого количества бесплатных и премиум тем, в том числе Starter Kit, на основе Bootstrap.
Читать дальше →

Использование screen для логирования действий (аудита) пользователей в Linux

Reading time6 min
Views33K

Задача:


Собирать информацию о действиях пользователя (аудита) в консоли Linux, а именно вводимых им командах и выводимой на экран информации.

Предлагаемое решение:


screen по умолчанию для всех пользователей в Linux с логированием

Необходимые условия:


  1. Полное логирование всех пользователей в консоли, включая вывод информации процессами, чтобы можно было оценить почему пользователь принял то или иное решение
  2. Без возможности отключения логирования
  3. Раз уж выбрали screen — максимально используем его возможности (открытие новых окон, отключение по ^a + d, оставляя рабочие процессы запущенными и другие удобства)
  4. Максимальное удобство — не должно быть каких-либо несовместимостей с приложениями
  5. В случае использования пользователями, не знакомыми с screen — сделать работу максимально знакомой и близкой к обычной командной оболочке (shell)

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

Эстафета из 50-ти квайнов

Reading time2 min
Views106K

Квайн — компьютерная программа, которая выдаёт на выходе точную копию своего исходного текста. Японский рубист Юсукэ Эндо (Yusuke Endoh) создал нечто невероятное. Quine Relay — программа на Ruby, которая генерирует код программы на Scala, которая генерирует код программы на Scheme, которая генерирует… и так далее на 50-ти языках программирования, пока программа на REXX снова не генерирует изначальный код на Ruby.

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

Доказательное планирование

Reading time13 min
Views41K
Примечание переводчика: оригинальная статья была написана в 2007-м году, однако, на мой взгляд, полностью сохраняет актуальность и сегодня.

Разработчики программного обеспечения не любят составлять план работ. Обычно пытаются вовсе от него отказаться. «Закончу, когда закончу!», — говорят они, ожидая, что этот смелый и веселый поступок вызовет одобрение у босса, а о планировании будет успешно забыто.

Большая часть расписаний, с которыми вы встретитесь, будет представлять из себя бездушные отписки. Совершенно забытые, они хранятся в каком-нибудь общем каталоге. После выпуска продукта с опозданием на пару лет странный парень, в чьем офисе, говорят, видели картотеку, принесет на обсуждение причин провала старую распечатку, которую все засмеют. «Только гляньте! Мы запланировали две недели, на переписывание системы с нуля на Ruby!»
Читать дальше →

Экономим время на подключении шрифтов. Год спустя

Reading time3 min
Views6K


Всем привет!
Ровно год назад, 12 июля, был опубликован пост о задумке собирать бесплатные шрифты и организовать удобный доступ к ним. Именно эту дату будем считать днем рождения нынешнего WebFont.ru.
Сегодня будет повествование о том, что и как удалось сделать.
Читать дальше →

Кросс-компиляция в OS X под Linux используя crosstool-ng

Reading time4 min
Views14K


В данной заметке речь пойдёт о замечательном средстве автоматизации сборки кросс-тулчейнов crosstool-ng, практически незаменимого инструмента для любого уважающего себя embedded-разработчика. Если вам приходилось по-серьёзному собирать софт из x86-linux под arm-linux, то вы наверняка слышали о нём.

В данном руководстве рассматривается не столько кросс-компиляция по архитектуре, сколько кросс-компиляция по системе — сборка под Linux в Darwin.
Читать дальше →

Замена фона в Гимпе — рабочее решение

Reading time3 min
Views26K
В комментариях к посту Clipping Magic... я посетовала на невозможность качественно отделить объект от фона в Гимпе. Я с мая искала рабочий способ замены фона, чтобы не мучиться с фотошопом в убунту, которая давно уже является у меня единственной осью на десктопе. Прочитав сотни уроков (в том числе уроков по ручному созданию подобных масок в фотошопе, т.к. маски в гимпе почти не отличаются), я так и не нашла способа, который был бы таким же быстрым и качественным, как Refine Edges в CS5-6. А вчера в каталоге плагинов на официальном сайте Гимпа был выложен плагин, который наконец-то справился с задачей.
Итак, встречайте:
Читать дальше →

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity