Search
Write a publication
Pull to refresh
27
0
Maksim @MuLLtiQ

Software engineer

Send message

Microsoft: наступил «кризис гениев», инженеры на вес золота, в том числе и иностранные

Reading time1 min
Views68K


Бред Смит (Brad Smith) — исполнительный вице-президент Microsoft и генеральный советник компании — на пресс-конференции для журналистов, собранной после того, как Microsoft обратилась в Конгресс США по поводу визовой политики для определенного рода эмигрантов, заметил следующее — "… нехватка квалифицированных специалистов достигла такого уровня, что можно говорить о кризисе гениев для высокотехнологичных компаний".

В связи с этой ситуацией Microsoft намерена лоббировать в Конгрессе США ослабление визовой политики для высокообразованных инженерных кадров, которые хотели бы получить новое место работы в США и инвестировать миллионы долларов в новые программы образования из области технологий, инженерии и математики (то, что в США называется STEM — Science, Technology, Engineering, Math). Эта же программа подразумевает и выделение средств на подготовку учителей для школ, которые хорошо знакомы с современными компьютерными технологиями.
Узнать подробности

Vader — простой логгер для Dart

Reading time3 min
Views8.1K
Несколько дней назад я решил пощупать в каком состоянии на данный момент находится представленный некоторое время назад язык Dart. Самый простой, на мой взгляд, способ попробовать возможности языка — это написать на нем нечто простое и законченное. Недолго думая, я решил написать простенький логгер для Dart в объектно-ориентированном стиле. Под катом изложено мое впечатление от Dart и краткое описание того, что получилось.
Хочу!

Факторы поискового ранжирования Google

Reading time3 min
Views33K
Ребята с webmasterworld.com решили собрать все факторы, которые учитивает Google при ранжировании сайтов. Официальным представителем было заявлено (еще на тот момент), что их более 200. Пока список выглядит так, не исключено, что некоторые пункты включают в себя несколько факторов.
image
Читать дальше →

В Ubuntu 12.10 появится реклама и музыкальный магазин

Reading time1 min
Views30K


В версии Ubuntu, которая должна появиться в октябре этого года, будет отображаться реклама товаров Amazon. Механизм показа будет приблизительно следующим — поиск по компьютеру при помощи Unity Dash, помимо самих результатов поиска, также будет показывать и релевантые поисковому запросу товары.

Один из ключевых разработчиков (Director of Technology ) Ubuntu Оливер Райс (Oliver Ries) в рассылке для разработчиков Ubuntu Development честно признаёт, что компания начала таким образом монетизацию своей операционной системы:

Если пользователь кликает на товар и приобретает его, то процент от продажи товара будет поступать на нужды проекта [Ubuntu] (также как это происходит при выполнении запроса через поисковую панель, встроенную в Firefox)… Мы полагаем, что подобная модель заработка — это хороший метод помощи разработчикам и инвестирования в дальнейший рост Ubuntu.

В качестве рекламных провайдеров планируется интегрировать еще около 40 сайтов.
Узнать подробности

Красной таблетки не существует

Reading time5 min
Views128K

О чем это


Я долгое время был адептом идей о равенстве, свободе и братстве том, что существует красная таблетка.

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

На самом деле, после пары десятков проектов я пришел к выводу, что все это — не более чем заблуждения, и чудеса происходят только в книгах авторов, которые делают на своих бестселлерах миллионы. Или в головах консультантов, которые делают деньги, продавая вам фуфло в виде Agile, KPI и прочих умных слов.

Я не сделаю, возможно, в этом посте никаких открытий. Но сэкономлю вам пару лет, если вы решитесь поверить моему опыту.

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

Комикс Xkcd на 13 гигапикселов

Reading time1 min
Views68K


Вчерашний комикс Xkcd Click and Drag — это настоящий квест, на прохождение которого может уйти целый день. Комикс целиком занимает 165.888 x 79.872 px, то есть 13 гигапикселов. Если распечатать его с разрешением 300 dpi, то получится плакат 14 х 6,75 метра.
Читать дальше →

ECT — новый JavaScript шаблонизатор со вкусом кофе

Reading time2 min
Views12K
ECT — это логическое развитие существующих подходов к шаблонизации под соусом высокой производительности. В начале года я публиковал свою разработку — шаблонизатор JUST. ECT начинался как его развитие, но через некоторое время различие в них стало слишком большим, поэтому появился новый продукт.

Синтаксис


Во время работы с JUST, который использует EJS-совместимый синтаксис, пришло понимание, что это не очень удобно. Хотелось упрощения, хотя бы, для условных операторов и циклов. Я начал развивать код в этом направлении, но вовремя остановился. Я сам очень плохо отношусь к подобным велосипедам в плане синтаксиса. Когда добавляешь подобный синтаксический сахар в свою разработку, это кажется очень крутым и удобным нововведением. Но разработчик, который видит его впервые, скорее выберет знакомое ему и понятное решение, чем будет разбираться в новом синтаксисе.

Логичным решением в данной ситуации стало использование CoffeeScript в качестве встраиваемого языка.
Читать дальше →

Black Mesa уже можно загрузить бесплатно!

Reading time2 min
Views204K
Загрузить!
Зеркало 1
Зеркало 2
Зеркало 3
Зеркало 4

Отложите все свои дела на вечер, предупредите семью и близких, сегодня вечером в 18:45 MSK в свободном доступе появится легендарная Black Mesa.
Black Mesa это полный римейк всем известной Half-Life на движке Source. Проект стартовал в 2004 году, когда Valve перевыпустила оригинальный Half-Life на движке Source, но из нового в игре был только движок. Все текстуры и модели были старыми. Это и дало начало созданию мода с полностью новыми моделями от начала и до конца.




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

Эластичный MapReduce. Распределенная реализация

Reading time8 min
Views9.3K
Так случилось, что первый посмотренный мною фильм с упоминанием слова «суперкомпьютер» был Терминатор. Но, как ни странно, моя (тогда еще) не сформировавшаяся психика не посчитала скайнет мировым злом, списав агрессивное поведение первого в мире ИИ на недостаточное покрытие юнит тестами.

На тот момент у меня был ZX Spectrum (чьих 128 Kb явно не хватало на запуск чего-то похожего на ИИ) и много (думаю лет 10) свободного времени. Благодаря последнему факту, я благополучно дождался эры виртуализации. Можно было снять хоть 10K VPS, установить между ними канал связи и начинать создавать ИИ. Но мне хотелось заниматься программированием, а не администрированием/конфигурацией grid-системы, и я разумно начал ждать, когда вычислительные ресурсы начнут предоставляться как сервис.

Моей радости не было конца, когда появились облачные сервисы. Но радость длилась недолго: стало понятно, что пока прямые коммуникации между отдельными вычислительными инстансами – это фантастика код, который нужно писать самому (то есть с большой вероятностью он работать не будет). Попереживав пару лет по этому поводу, я (мы все) дождался Hadoop, сначала «on-premises», а потом и эластичного «on-demand». Но и там, как оказалось, не всё так эластично гладко
Читать дальше →

Прибитый к низу футер своими руками

Reading time10 min
Views223K
Все, кто привык к полноценно оформленным страницам сайтов, предпочитает вид «прибитого» (прилипающего, sticky) к низу футера страницы. Но есть в интернете две беды: нерастущие вниз поля ввода и неприбитые (к низу окна) футеры. Например, когда открываем короткие по высоте страницы типа habrahabr.ru/settings/social — сразу бросается в глаза, что информация, призванная быть в нижней части окна просмотра, прилипает к содержанию и находится где-то посередине, а то и в верхней части окна, когда внизу — пусто.

Так, вместо того, чтобы .
Данное пособие для начинающих верстальщиков покажет, как за 45 минут сделать «прибитый» футер, исправив недоработки даже такого уважаемого издания, как Хабр, потягаться с ним в качестве исполнения своего перспективного проекта.
как сделать, чтобы трава была зелёная, а футеры - прибитыми

Индусский код в Микрочипе

Reading time8 min
Views66K
Понадобилось быстро подключить SD-карточку к микроконтроллеру, и задача казалась простецкой — добрый микрочип предлагает библиотеки для всего чего угодно (ах, поставить линк на библиотеки — не судьба), но после первого взгляда на их код, волосы на голове начали шевелиться.

Те кто общался с саппортом микрочипа, наверное замечал что зачастую попадает на индийский департамент конторы, и все-бы ничего если бы не подозрение что весь микрочип разом переехал в Бомбей и набрал индийских бездомных школьников для написания своих библиотек.



Не подумайте, что я сейчас пытаюсь гнуть расово верную линию — не имел опыта общения конкретно с индусами, но точно знаю что среди наших их тоже достаточно (не верите — наберите «95» в гугле), но понятие «индусского кода» появилось давно и закрепилось довольно прочно, хотя вы и не найдете его в политкорректной википедии (но гугол о нем точно знает).
Индусский код (не индийский или индейский) — жаргонное нарицательное название для программного кода крайне низкого качества, использующего простые, но порочные принципы «copy-paste».
Почему именно индусский?
По слухам в Индии с некоторых времен существует практика оценки производительности труда программиста на основе количества написанного кода. Чем больше кода, тем больше программист работает, и, следовательно, выше его оклад. Шустрые индусы быстро сообразили, как обманывать неквалифицированных заказчиков.
Полезное замечание от kaladhara
Житель Индии — индиец, а индус — это последователь любого направления индуизма. Таким образом даже чукча преклонных годов, исповедующий шиваизм (и, вероятно пишуший на с++) — индус.


Итак, если вы хотите научиться программировать так как это делают в микрочипе следуйте следующим простым советам…
Читать дальше →

С днем программиста!

Reading time1 min
Views63K
В самую восточную часть России уже пришел новый день, а это значит, что там уже наступил замечательный праздник: День Программиста! И сегодня праздник вдвойне, потому что сегодня только 12, а уже день программиста: сейчас ведь у нас високосный год.
Места сбора в различных городах ищем и обсуждаем под катом
По такому случаю всем предлагаю провести сегодня вечер за кружечкой хорошего:

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

Шпаргалка по MV-паттернам для проектирования веб-приложений

Reading time7 min
Views71K
mv-patterns
В Интернет можно найти множество различающихся реализаций и схем, уже набившего оскомину, паттерна MVC. В разных книгах я также встречал разные схемы. Это порождает некоторую путаницу и комментарии к моей предыдущей статье: "Реализация MVC паттерна на примере создания сайта-визитки на PHP" тому подтверждение. В поисках истины, я попытался расставить все по местам… перечитал некоторую литературу и статьи по паттернам проектирования и написал дополнение к упомянутой статье. Но решил запостить это дополнение, как отдельный топик в надежде на фидбэк. Под катом вы найдете несколько часто встречающихся схем MVC и MVP с описанием жизненного цикла приложения, а также описание менее популярных паттернов HMVC и MVVM. Разумеется, некоторые из перечисленных паттернов применимы не только к веб-приложениям, но в статье они рассматриваются именно в этом контексте.
Читать дальше →

Алгоритмы? Не, не знаю

Reading time3 min
Views109K

Введение


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

Неочевидная оптимизация по скорости при решении конкретной задачи на Python

Reading time2 min
Views9.6K

Начнём


Имеется SQL база данных. Задача описывается тремя фразами:
  • выгрузка данных
  • валидация данных
  • генерация отчёта

Задача детальнее
Читать дальше →

Вышло обновление PyCharm до версии 2.6 с диаграммами классов, Flask, Python 3.3 и улучшенным редактором CSS/Sass/LESS

Reading time1 min
Views9K
Даже находясь частично на проходящем сейчас в Вашингтоне DjangoCon'е (а может и благодаря этому) мы смогли таки выпустить сегодня большое обновление самой мощной среды разработки для Python & Django — PyCharm 2.6.

С прошлого релиза в апреле мы сделали следующее:
Читать дальше →

Немного о многопоточном программировании. Часть 1. Синхронизация зло или все-таки нет

Reading time12 min
Views70K
Мне по работе часто приходится сталкиваться с высоконагруженными многопоточными или многопроцессными сервисами (application-, web-, index-server).
Достаточно интересная, но иногда неблагодарная работа — оптимизировать все это хозяйство.
Растущие потребности клиентов часто упираются в невозможность просто заменить железную составляющую системы на более современную, т.к. производительность компьютеров, скорость чтения-записи жестких дисков и сети растут много медленнее запросов клиентов.
Редко помогает увеличение количества нодов кластера (система как правило распределенная).
Чаще приходится запустив профайлер, искать узкие места, лезть в source code и править ляпы, которые оставили коллеги, а иногда и сам, чего греха таить, много лет назад.
Некоторые из проблем, связаных с синхронизацией, я попытаюсь изложить здесь. Это не будет вводный курс по многопоточному программированию — предпологается, что читатель знаком с понятием thread и context switch, и знает для чего нужны mutex, semaphore и т.д.
Читать дальше →

Периодическая таблица гарнитур

Reading time1 min
Views4.1K
Интересная инфографика на тему самых популярных и влиятельных гарнитур на сегодняшний день.
В каждой клеточке название гарнитуры и рейтинг популярности, стиль и классификация, дизайнер, а также год создания.
Всего в таблице представлены 100 гарнитур. Самой популярной всё ещё остается Гельветика.

image
Картинка кликабельна.

Object.defineProperty или как сделать код капельку лучше

Reading time3 min
Views35K
Этот краткий пост-заметку или температурный бред (в Одессе похолодало, да) хочу посвятить такой прекрасной функции, как Object.defineProperty (и Object.defineProperties). Активно использую её уже около двух месяцев, так как поддержка старых браузеров (в том числе и IE8) в проекте, который я сейчас реализую, не требуется (завидуйте).

Как положено статье на хабре, приведу краткое описание того, что она делает. Object.defineProperty добавляет новое свойство, обладающее неким нестандартным для обычного свойства поведением, и принимает три аргумента:
  • Объект, который мы модифицируем, добавляя новое свойство
  • Свойство (строка), которое, собственно, хотим добавить
  • Дескриптор: объект, содержащий «настройки» нового свойства, например аццессоры (геттер, сеттер)

Дескриптор может содержать следующие свойства:
  • value (любое значение: строка, функция...) — значение, которое получит определяемое свойство объекта (геттер и сеттер в данном случае определить нельзя)
  • writable (true/false) — можно ли перезаписать значение свойства (аццессоры тоже не доступны)
  • get (функция) — геттер (value и writable определить нельзя)
  • set (функция) — сеттер (value и writable определить нельзя)
  • configurable (true/false) — можно ли переопределить дескриптор (использовать Object.defineProperty над тем же свойством)
  • enumerable (true/false) — будет ли свойство перечисляться через for..in и доступно в Object.keys (плохая формулировка)

Пример
Содержимое
// Код сперт с MDN
var o = {};
Object.defineProperty(o, "a", {value : 37,
                               writable : true,
                               enumerable : true,
                               configurable : true});

 
var bValue;
Object.defineProperty(o, "b", {get : function(){ return bValue; },
                               set : function(newValue){ bValue = newValue; },
                               enumerable : true,
                               configurable : true});


Лучше меня объяснит MDN Object/defineProperty. Благо, даже английский знать не надо, и так всё понятно.

Если нужно определить сразу несколько свойств, можно использовать Object.defineProperties, который принимает два аргумента: объект, требующий изменений и объект с определяемыми ключами.
MDN: Object/defineProperties.

Пример
Содержимое
// Код сперт с MDN
Object.defineProperties(obj, {
  "property1": {
    value: true,
    writable: true
  },
  "property2": {
    value: "Hello",
    writable: false
  }
  // etc. etc.
});



Теперь соль. Чего я вообще решил это запостить?
Читать дальше →

Алфавит в Google vs Алфавит в Яндекс

Reading time2 min
Views2.8K
Скоро 1-е сентября. Пора повторить алфавит. После публикации английского алфавита в Google я решил сравнить результаты русского в Google и Яндекс. Эксперимент заключался в набирании каждой буквы и фиксировании списка-подсказки популярных ключевых фраз.

В английском алфавите в Google почти все результаты получились бренды. Не хочу спекулировать, но, или у топ сайтов все хорошо с SEO, или они договариваются с мировым лидером о «правильном» выводе. В русском же алфавите, мне кажется, всё честнее. Яндекс показывает своих конкурентов больше, в английском варианте Google как минимум «припрятал» Bing. В общем, результаты похожи, но как всегда, — не без сюрпризов. Давайте дальше по буквам:

Аа





Яндекс явно не любит шутить и бережёт анекдоты на десерт.

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

Information

Rating
Does not participate
Date of birth
Registered
Activity