Search
Write a publication
Pull to refresh
76
0
Zaur Nasibov @BasicWolf

Software Engineer

Send message

Внутренняя кухня: рецепт эффективной работы с удаленным сотрудником. Часть 2

Reading time4 min
Views8.6K
Почему начинается с пункта 6? Потому что в публикации «Внутренняя кухня: рецепт эффективной работы с удаленным сотрудником. Часть 1» было пять «ингредиентов», и ими размышления на эту тему не исчерпались.

6. Продумайте вопрос коммуникации

Технологии-технологиями, но удаленная работа в любом случае связана с определенными сложностями в коммуникации. И эти сложности становятся все более раздражающими по мере расширения круга ответственности удаленного работника.
Пример? Необходимо решить срочный вопрос с иллюстрированием материала до того, как журнал будет сверстан, а коллега, в компетенции которого находится эта проблема, несмотря на «зелененький» статус в Skype почему-то не отвечает ни на письмо, ни на сообщения! Возможно, именно в этот момент он разбирает письма клиентов или проверяет отчеты, но меня, как ответственного конкретно за этот маленький участок проекта, данный факт как-то не успокаивает. В офисе можно встать над душой, попытаться оторвать коллегу от дела, задать вопрос «между делом», беспардонно потретировать бедолагу под дверью туалета.
Читать дальше →

Самодельный трекинг посылок, или Туда и Обратно

Reading time6 min
Views555K
Наверняка многие, кто заказывал товар из-за границы, задавались вопросом: что происходит с посылками от экспорта до импорта? В каком потустороннем пространстве они иногда проводят месяцы своего путешествия? Какими самолетами прилетают в Новосибирск посылаемые авиапочтой в Москву отправления?

Идея


Проследить, как движутся посылки из-за границы в Москву, подробнее, чем официальный трек. Для этого отправить устройство, способное сообщать свои координаты.

Один мой друг послал почтой другому моему другу…

сколько на это ушло времени, как ходят посылки, почему семь тысяч вёрст не крюк

Centrifuge — брокер реал-тайм сообщений

Reading time6 min
Views19K
Привет, Хабр!

В статье я опишу свой небольшой open-source проект — Centrifuge (далее Центрифуга). Это сервер на Python, задача которого — рассылка (broadcast) сообщений в реальном времени подключенным (в основном из браузера) клиентам.

Это будет история, наполненная как личными эмоциями, так и описанием используемых технологий, но без примеров кода. Если вам близка тема — не проходите мимо, будет любопытно.

Для начала, посмотрите, пожалуйста, скринкаст (не забудьте включить субтитры), если после просмотра интерес не пропадет, смело читайте дальше!


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

Scala WAT: Коллекции

Reading time4 min
Views16K
В прошлый раз мы разбирались с обработкой опциональных значений, выяснилось, что неправильно воспользовавшись элегантными средствами библиотеки Scala, можно продолжать стрелять себе по ногам.

В этот раз перейдём к коллекциям. Стандартная библиотека для коллекций в Scala настолько богата, что может предложить готовые методы даже для самых требовательных разработчиков. В каких случая применять какие методы обычно не описывается и всё познаётся на опыте. Обычно, в начале все узнают filter и map, на этом дело может ограничиться, ведь с определённой фантазией можно реализовать множество алгоритмов только на этих функциях. Однако, эти способы могут быть неоптимальны или рождать невозможные для предметной области результаты, которые, однако же, придётся обработать.

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

Моё маленькое расследование или История одного взлома

Reading time32 min
Views52K
Всё началось с сообщения «Тут?» от моего друга в одной из социальных сетей. «Яндекс нашёл на сайте вирусы. Глянешь?» «Отчего ж не глянуть», подумал я.
Так началось моё трёхдневное исследование скриптов, дабы понять суть взлома и что там вообще происходит.
Читать дальше →

Обзор блока питания OCZ Silencer Mk III

Reading time5 min
Views38K
Обзоры «железа» — редкость для сегодняшнего Хабра, а уж тем более обзоры блоков питания. Почему именно OCZ Silencer Mk III? Ответ весьма прозаичен — он белый. Как обладатель белого корпуса с прозрачным окном, я всей душой желал появления хорошего блока питания белого цвета. Разумеется, можно покрасить существующий черный агрегат или обтянуть его пленкой, но это не серийное решение для каждого, не всякий юзер будет жертвовать гарантией ради эстетики. На рынке очень мало предложений для ценителей белых комплектующих, а ведь было время, когда материнские платы на белом текстолите или видеокарта белого цвета не считались экзотикой. Какие еще достоинства, кроме цветовой гаммы, у этого блока? Под катом будет ответ.

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

Http запросы — мы все это делаем неправильно

Reading time3 min
Views190K
В проекте, над которым я работаю, мы используем огромное количество сторонних библиотек. Многие из них — адаптеры для различных сервисов. Что их объединяет, это то, что они работают с сетью. Json поверх http, soap поверх http, какие-то свои протоколы поверх http. Т.е. все так или иначе используют http. И как ни удивительно, мало кто из них пользуется преимуществами его последней версии. Я не поленился заглянуть в википедию, прошло ровно 14 лет как была принята спецификация http 1.1. И потому я решил обратиться с призывом:
image

Да, речь пойдет о keep alive. Суть в том, что, начиная с http 1.1, клиент и сервер могут договориться не закрывать установленное tcp-соединение после завершения запроса, а переиспользовать его для следующих запросов. Это нужно потому, что на установку соединения требуется время. Иногда это время больше, чем время самого запроса. И если все серверы уже давным-давно такую возможность поддерживают, а все браузеры и большинство других клиентов её используют, то у разработчиков различных библиотек для популярных языков программирования здесь почему-то пробел.
Читать дальше →

Map-Reduce на примере MongoDB

Reading time5 min
Views62K
В последнее время набирает популярность семейство подходов и методологий обработки данных, объединенных общими названиями Big Data и NoSQL. Одной из моделей вычислений, применяемых к большим объемам данных, является технология Map-Reduce, разработанная в недрах компании Google. В этом посте я постараюсь рассказать о том, как эта модель реализована в нереляционной СУБД MongoDB.

Что касается будущего нереляционных баз вообще и технологии Map-Reduce в частности, то на эту тему можно спорить до бесконечности, и пост совершенно не об этом. В любом случае, знакомство с альтернативными традиционным СУБД способами обработки данных является полезным для общего развития любого программиста, так же как, к примеру, знакомство с функциональными языками программирования может оказаться полезным и для программистов, работающих исключительно с императивными языками.

Нереляционная СУБД MongoDB представляет данные в виде коллекций из документов в формате JSON и предоставляет разные способы обработки этих данных. В том числе, присутствует собственная реализация модели Map-Reduce. О том, насколько целесообразно применять именно эту реализацию в практических целях, будет сказано ниже, а пока ограничимся тем, что для ознакомления с самой парадигмой Map-Reduce эта реализация подходит как нельзя лучше.

Итак, что же такого особенного в Map-Reduce?
Читать дальше →

Online IDE и Local File Inclusion

Reading time1 min
Views6K
В последнее время появилось множество online IDE с возможностью компиляции и запуска в том числе и native-приложений. Естественно, возникает вопрос о безопасности таких сервисов. Скомпилированные программы запускаются в песочнице, а вот сама компиляция зачастую происходит в незащищенной среде.

GCC + GAS

GCC позволяет с помощью директивы asm вызывать GAS, у которого есть замечательная инструкция incbin. С ее помощью на этапе компиляции можно включить файл в качестве данных. Тогда exploit для С++ выглядит следующим образом:

#include <stdio.h>

extern "C"

asm(
     ".global _data\n"
     ".data\n"
     "_data:\n"
     ".incbin \"/etc/passwd\"\n"
     ".byte 0"
);

extern const char _data;
const char* data = &_data;

int main() {
    printf("%s", data);
}

Как я искал работу или Как не надо проводить собеседования

Reading time6 min
Views316K
imageВ общем, решение назревало давно, и вот, одним пасмурным Питерским утром, я сказал шефу, что, к сожалению, тут наши пути расходятся. Было составлено резюме, более или менее описан десятилетний опыт работы в области web-программирования, обдумана сумма оклада, немного выше средней по Питеру, но далеко не топовая (я пока ни разу не гуру), оплачены услуги по поднятию резюме в топ каждые четыре часа, установлена прога, записывающая все входящие звонки (чтоб ничего не забыть), и я сел ждать. Собственно, это был вечер пятницы, так что ждать пришлось аж до понедельника, но в понедельник начался ад.

Звонков было много, за следующую неделю я посетил 17 собеседований, по 3-4 в день, в четверг я уже перестал соглашаться на собеседования, а звонки все шли и шли.

Это не статья из серии, «смотрите как меня все хотят, я офигенен», я просто хочу сказать, что сейчас в России существует дефицит IT специалистов, и когда подходящий человек приходит к вам в компанию, важно не только то, насколько он понравится вам, но и то, насколько вы понравитесь ему, ибо мне кажется, что сейчас конкуренция существует скорее на вашей стороне, на стороне работодателей, чем на стороне программистов. Оговорюсь сразу, речь не пойдет о всяких Яндексах, ВКонтактах и Мэилру, там все ясно, речь идет о компаниях второго эшелона, предыдущей ступени.
Читать дальше →

Беседа Линуса Торвальдса со студентами университета Аалто (23.10.2012)

Reading time35 min
Views47K


Приветствую, Хабр!

Однажды я наткнулся в YouTube на это видео с Линусом Торвальдсом и с огромным удовольствием его посмотрел, узнал много интересного для себя и к своему удивлению обнаружил, что на Хабре оно осталось незамеченным, особенно учитывая то, что предыдущее его общение со студентами из этого университета многим хорошо известно из-за случая внезапного пиара nVidia со стороны Линуса. Не знаю, может я плохо искал, но, в любом случае, беседа ведется на английском языке и длится более часа и, возможно, кто-то из вас не очень хорошо им владеет, поэтому я решил перевести ее для вас в текст на русском языке и опубликовать на Хабре. Итак, тем, кто хочет узнать что сейчас Линус делает в Linux, как он борется с прокрастинацией, что он думает о Linux на мобильных устройствах, что для него важнее в Linux, юзабилити или безопасность, как он относится к производителям железа, на чем зарабатывает, как отдыхает, программируют ли его дети и многое-многое другое — добро пожаловать под кат!
Продолжай, я заинтригован...

О цветовых пространствах

Reading time6 min
Views153K
Я по образованию программист, но по работе мне пришлось столкнуться с обработкой изображений. И тут для меня открылся удивительный и неизведанный мир цветовых пространств. Не думаю, что дизайнеры и фотографы узнают для себя что-то новое, но, возможно, кому-нибудь это знание окажется, как минимум полезно, а в лучшем случае интересно.
Читать дальше →

Десять возможностей C++11, которые должен использовать каждый C++ разработчик

Reading time12 min
Views541K
В данной статье рассматривается ряд возможностей С++11, которые все разработчики должны знать и использовать. Существует много новых дополнений к языку и стандартной библиотеке, эта статья лишь поверхностно охватывает часть из них. Однако, я полагаю, что некоторые из этих новых функций должны стать обыденными для всех разработчиков С++. Подобных статей наверное существует много, в этой я предприму попытку составить список возможностей, которые должны войти в повседневное использование.

Сегодня в программе:
  • auto
  • nullptr
  • range-based циклы
  • override и final
  • строго-типизированный enum
  • интеллектуальные указатели
  • лямбды
  • non-member begin() и end()
  • static_assert и классы свойств
  • семантика перемещения
Читать дальше →

Гель IBM уничтожает бактерии, даже устойчивые к антибиотикам

Reading time2 min
Views97K

Результат воздействия гидрогеля на бактериальную биоплёнку золотистого стафилококка, устойчивого к антибиотикам

Компания IBM десятилетиями занимается разработкой материалов для производства компьютерных микросхем. Несколько лет назад во время работы над одним из чипов инженеры обнаружили, что при соединении определённых материалов образуется положительный электрический заряд, с помощью которого можно вытравливать кремниевую подложку исключительно точно, фактически, в атомном масштабе.

Безусловно, это открытие полезно для производства чипов. Но учёные задались вопросом, а где ещё его можно использовать? Например, как воздействует положительный заряд на живые клетки? Оказалось, что эффект смертельный: вещество притягивает к себе отрицательно заряженную клеточную мембрану, мгновенно уничтожая клетку.
Читать дальше →

О законах Универсальности или что нам может объяснить Тетрис про кофейные пятна

Reading time6 min
Views44K
На следующее утро после больших метелей, охвативших северо-восток США, я сидел в своей машине, готовый бросить вызов опасным дорожным условиям, чтобы съездить в местное кафе. Мой дом в Нью-Джерси был за пределами основного пути шторма, так что вместо сугробов нас приветствовала смесь мокрого снега и ледяного дождя. И сидя в своей машине, я не мог не быть очарован этими странными узорами из льдинок, образующихся на лобовом стекле. Вот что я увидел:


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

Как я учился защищать изображения

Reading time5 min
Views79K

Изображение защиты

В этой статье хочу изложить нелёгкий путь, который я прошёл «защищая» изображения в вебе. Перед тем, как мы начнём это увлекательное путешествие, хочу обозначить два подхода в деле защиты изображений:
  1. ограничение/запрет постинга прямых ссылок на оригиналы изображений
  2. вы параноик и пытаетесь ограничить распростронение копий изображений

UPDATE
Универсальной защиты конечно же не существует. Статья о том, как не подставлять напрямую данные из GET в SQL-запросы. Только в контексте защиты изображений.
Итак...

Возможности оптимизации в языках C и C++

Reading time12 min
Views61K
Существует мнение, что C++ имеет заметные накладные расходы по сравнению с C и поэтому он медленнее. Помимо этого, даже, существуют статьи показывающие преимущества в скорости языков с компиляцией налету (JIT — Just-in-time compilation), таких как Java и C#. Сравнить последние мы оставим тем, кто считает их быстрыми, но мы объясним почему это не так. А C и C++ мы сравним на примере задачи поиска данных.
Задача поиска данных часто встречается в: веб-сервисах, системах управления баз данных (СУБД), гео-поиске и аналитике.
Сначала для простоты объяснения поставим задачу поиска элементов полным проходом по массиву из 10 000 000 элементов (структур), содержащих 5 полей с диапазонами значений: amount_of_money(0-1000000), gender(0-1), age(0-100), code(0-1000000), height(0-300). А в следующих статьях добавим в решение индексный поиск.
Мы будем писать кроссплатформенно под MSVC11(MSVS2012) и GCC 4.7.2, и использовать в них частично реализованный стандарт C++11.
Читать дальше →

Как я не спал год или создание социального Android приложения

Reading time8 min
Views35K
Доброго времени суток, уважаемые хабражители. Я работаю в большой IT компании Android-разработчиком.

Все началось примерно год назад. Тогда, я решил начать свой первый проект. Идея приложения пришла мне практически сразу. Ее первоначальная версия звучала примерно так — «Я хочу, чтобы каждый мог узнать независимое мнение людей всего мира, по интересующему вопросу».

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

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

Doom 3 BFG — обзор исходного кода: Многопоточность (часть 2 из 4)

Reading time6 min
Views42K
Часть 1: Введение
Часть 2: Многопоточность
Часть 3: Рендеринг (Прим. пер. — в процессе перевода)
Часть 4: Doom classic — интеграция (Прим. пер. — в процессе перевода)

Движок для Doom III был написан в период с 2000 по 2004 год, в то время, когда большинство ПК были однопроцессорными. Хотя архитектура движка idTech4 разрабатывалась с учетом поддержки SMP, это закончилось тем, что поддержка многопоточности делалась в последнюю минуту (см. интревью с Джоном Кармаком).
Читать дальше →

Путь JavaScript модуля

Reading time28 min
Views121K


На момент написания этой статьи в JavaScript еще не существовало официальной модульной системы и все эмулировали модули как могли.

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

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

Дело в том, что раньше не думали, что на JavaScript можно делать огромные проекты, а не просто «пропатчить DOM», поэтому о модулях не думали. Да и вообще не думали о будущем. И тут Внезапно будущее нагрянуло! Все вроде-бы уже есть, а модули в JavaScript, мягко говоря, запаздывают. Поэтому разработчикам приходится крутиться и выдумывать какие-то эмуляторы модульности.

Думаю многие из вас читали прекрасную статью Addy Osmani Writing Modular JavaScript With AMD, CommonJS & ES Harmony, которая стала одной из глав его книги Learning JavaScript Design Patterns в этой статье рассказывается про «современные» JavaScript модули или же читали достаточно старую статью JavaScript Module Pattern: In-Depth 2010 года про «старые» модули.

Я не буду переводить эти статьи и не буду делать из них солянку. В своей статья я хочу рассказать о моем модульном пути. О том как я проделал путь от «старых» модулей к «новым» и что использую сейчас и почему.
Читать дальше →

Information

Rating
Does not participate
Location
Азербайджан
Registered
Activity