Один из самых привлекательных моментов в присоединении к стартапу — получение опционов (прав на приобретение определенной доли в стартапе по фиксированной цене). Это предоставляет право владения долей компании и помогает сбалансировать интересы руководства и сотрудников. Впрочем, один аспект в обыкновенном пакете опционов вызывает горячие дискуссии между сотрудниками и руководителями, и этот аспект — годовой порог (cliff). Мы в Alconost перевели для вас статью, в которой понятно и практично написано о клифф-вестинге, опционах и рисках, связанных со всем этим.
Артем @Lond
Web developer
Lock-free структуры данных. Основы: Атомарность и атомарные примитивы
15 min
108KПостроение lock-free структур данных зиждется на двух китах – атомарных операциях и способах упорядочения доступа к памяти. В этой статье речь пойдет об атомарности и атомарных примитивах.
Анонс. Спасибо за теплый прием Начал! Вижу, что тема lock-free интересна хабрасообществу, это меня радует. Я планировал построить цикл по академическому принципу, плавно переходя от основ к алгоритмам, попутно иллюстрируя текст кодом из libcds. Но часть читателей требует
А пока я судорожно готовлю начало Извне, — первая часть Основ. Статья во многом не о C++ (хотя и о нем тоже) и даже не о lock-free (хотя без atomic lock-free алгоритмы неработоспособны), а о реализации атомарных примитивов в современных процессорах и о базовых проблемах, возникающих при использовании таких примитивов.
Атомарность — это первый
+113
Подробно о внутренней кухне AngularJS
9 min
48KTranslation
У фреймворка AngularJS есть несколько интересных решений в коде. Сегодня мы рассмотрим два из них – как работают области видимости и директивы.
Первое, чему обучают всех в AngularJS – директивы должны взаимодействовать с DOM. А больше всего новичка запутывает процесс взаимодействия между областями видимости, директивами и контроллерами. В этой статье мы рассмотрим подробности работы областей видимости и жизненный цикл Angular-приложения.
Если в следующей картинке вам что-то непонятно – эта статья для вас.
(В статье рассматривается AngularJS 1.3.0)
Первое, чему обучают всех в AngularJS – директивы должны взаимодействовать с DOM. А больше всего новичка запутывает процесс взаимодействия между областями видимости, директивами и контроллерами. В этой статье мы рассмотрим подробности работы областей видимости и жизненный цикл Angular-приложения.
Если в следующей картинке вам что-то непонятно – эта статья для вас.
(В статье рассматривается AngularJS 1.3.0)
+28
Почему вам НЕ стоит использовать AngularJs
12 min
248KМного времени прошло с момента появления AngularJs (в масштабах веб-технологий конечно). Сейчас в интернетах есть огромное количество постов восхваляющих этот фреймворк до небес, что это манна небесная не иначе, а критики не так уж и много как он того заслуживает. Но такие статьи уже потихоньку начинают появляться, и меня это радует, надеюсь индустрия переболеет ангуляром так же, как переболела MooTools, Prototype, %какой-нибудь новый язык под JVM%, %другая-супер-революционная-технология%. Не знаю почему, но в IT-области такие революционные технологии, которые поднимают шум, а потом пропадают, появляются довольно часто. Хороший разработчик должен уметь отличать очередную модную технологию, от работающего инструмента. И для этого очень важно критически смотреть на вещи. Моя статья — это компиляция самых весомых выводов из других статей, и моих личных умозаключений. Ангуляр создает хороший вау-эффект, когда видишь его впервые: «ух ты, я написал ng-repeat, и реализовал эту логику одними тегами и все само обновляется!», но как только приходится реализовывать реальные приложения, а не очередной TODO-лист, то все становиться очень печально. Сразу хочу сказать, что фреймворк я знаю хорошо, даже больше чем мне хотелось бы его знать, я программировал на нем в течении 2 лет. И для следующего проекта я его точно не выберу, и это хорошо, все мы учимся на ошибках. Так что же не так с ангуляром? Тут нет однозначного ответа, слишком много разных недостатков, которые создают такой облик фреймворку. Если одним словом – непродуманная архитектура. Под катом я привожу конкретику, так что устраивайтесь поудобнее. ДА НАЧНЕТСЯ ХОЛЛИ ВАР!
+179
Семь принципов создания современных веб-приложений
19 min
188KTutorial
Translation
Эта статья основана на моей презентации с конференции BrazilJS в августе 2014 года. Она базируется на идеях, о которых я писал в блоге недавно, в основном, в связи с UX и производительностью.
Я хочу представить 7 действенных принципов для веб-сайтов, которые хотят применить JavaScript для управления UI. Эти принципы являются результатом моей работы как веб-дизайнера, но также как давнего пользователя WWW.
JavaScript бесспорно стал незаменимым инструментом для разработчиков фронтенда. Сейчас сфера его применения расширяется на другие области, такие как серверы и микроконтроллеры. Этот язык программирования выбрали престижные университеты, чтобы обучать студентов основам информатики.
В то же время существует ряд вопросов относительно его роли и конкретного использования, на которые многие затрудняются ответить, в том числе авторы фреймворков и библиотек.
Я хочу представить 7 действенных принципов для веб-сайтов, которые хотят применить JavaScript для управления UI. Эти принципы являются результатом моей работы как веб-дизайнера, но также как давнего пользователя WWW.
JavaScript бесспорно стал незаменимым инструментом для разработчиков фронтенда. Сейчас сфера его применения расширяется на другие области, такие как серверы и микроконтроллеры. Этот язык программирования выбрали престижные университеты, чтобы обучать студентов основам информатики.
В то же время существует ряд вопросов относительно его роли и конкретного использования, на которые многие затрудняются ответить, в том числе авторы фреймворков и библиотек.
- Должен ли JavaScript использоваться как замена функциям браузера: история, навигация, рендеринг?
- Умирает ли бэкенд? Нужно ли вообще рендерить HTML?
- Правда ли, что будущее за приложениями на одной странице (Single Page Applications, SPA)?
- Должен ли JS генерировать страницы на веб-сайте и рендерить страницы в веб-приложениях?
- Нужно ли использовать техники вроде PJAX или TurboLinks?
- Каково точное отличие между веб-сайтом и веб-приложением? Должно ли остаться что-то одно?
+90
Scala. Введение
12 min
87KПривет хабралюди.
Не так давно я заинтересовался одним из многочисленных ныне языков под JVM — Scala. Причин тому много, основная — всё нарастающее со временем чувство неудобства при работе с cpp-подобными языками. Взгляд мой попеременно падал на Ruby, Groovy, Python, но все они оставляли впечатление инструментов, не совсем подходящих для моего обычного круга рабочих задач (Python-таки хорош, но у нетипизированных языков есть свои ограничения). Scala же, напротив, показалась вполне годным языком. Так как поиск по хабру никаких статей о ней не выловил (было несколько, но мягко говоря не вводных), я решил написать маленький обзор и поделиться им с массами.
Не так давно я заинтересовался одним из многочисленных ныне языков под JVM — Scala. Причин тому много, основная — всё нарастающее со временем чувство неудобства при работе с cpp-подобными языками. Взгляд мой попеременно падал на Ruby, Groovy, Python, но все они оставляли впечатление инструментов, не совсем подходящих для моего обычного круга рабочих задач (Python-таки хорош, но у нетипизированных языков есть свои ограничения). Scala же, напротив, показалась вполне годным языком. Так как поиск по хабру никаких статей о ней не выловил (было несколько, но мягко говоря не вводных), я решил написать маленький обзор и поделиться им с массами.
+47
Дизайн будильника моей мечты
4 min
44KНет, не здоровенного. А просто удобного будильника для Андроида. После долгих поисков на Маркете я так и не смог найти будильник, который мне было бы приятно использовать. Поэтому в этой статье я буду проектировать будильник таким, каким бы я сам хотел его видеть.
Сразу скажу, что это будильник для тех, кому нужен именно будильник, который будит их по утрам, а не таймер для готовки яиц или костыльная замена напоминаниям в календаре.
Перед тем, как рассказать о том что есть в этом будильнике, я начну с того, чего в нём нет. Во-первых, в нём нет возможности установки нескольких будильников, так как в большинстве случаев они используются только для того, чтобы поставить 3 будильника подряд с целью не проспать. Это не работает и должно решаться другими средствами.
Во-вторых, в нём нет псевдо-анализа стадий сна, так как пока я не нашёл подтверждения тому, что хоть одно из таких приложений работает. И уж точно они не работают, если спишь в кровати не один.
И в-третьих, в нём нет никаких математических примеров для отключения звонка. Так что для любителей математики он не подойдёт.
Дисклаймер. Вполне возможно, у вас уже есть будильник который вас полностью устраивает. Что ж, тогда эта статья вряд ли вам будет интересна. А для остальных я расскажу о проектировании будильника
Сразу скажу, что это будильник для тех, кому нужен именно будильник, который будит их по утрам, а не таймер для готовки яиц или костыльная замена напоминаниям в календаре.
Перед тем, как рассказать о том что есть в этом будильнике, я начну с того, чего в нём нет. Во-первых, в нём нет возможности установки нескольких будильников, так как в большинстве случаев они используются только для того, чтобы поставить 3 будильника подряд с целью не проспать. Это не работает и должно решаться другими средствами.
Во-вторых, в нём нет псевдо-анализа стадий сна, так как пока я не нашёл подтверждения тому, что хоть одно из таких приложений работает. И уж точно они не работают, если спишь в кровати не один.
И в-третьих, в нём нет никаких математических примеров для отключения звонка. Так что для любителей математики он не подойдёт.
Дисклаймер. Вполне возможно, у вас уже есть будильник который вас полностью устраивает. Что ж, тогда эта статья вряд ли вам будет интересна. А для остальных я расскажу о проектировании будильника
+256
Определение местоположения по mac адресу роутера
1 min
168K1. Узнаем MAC–адрес WiFi роутера, через который вы выходите в интернет. (Через веб–интерфейс, дать arp–запрос «arp -a», посмотреть на обратной стороне девайса.)
2. Заходим по адресу samy.pl/mapxss
3. Вбиваем в текстовое поле MAC–адрес и жмем «Search MAC».
Как это работает?
+73
Особенности использования GD-lib на хостинге PHP c ограничеными ресурсами
2 min
835Данной проблемой пришлось занятся после случая на хостинге «Х», на котором достаточно небольшие изобржаения невозможно было преобразовать, используя эту библиотеку. Но самое противное заключалось в том что скрипт просто умирал, оставляя информацию только в логах. Поэтому пришлось выяснить
+6
Как не стать спамером со своей уютной рассылочкой
1 min
67KПользователь когда-то подписался на рассылку, но уже забыл когда, и главное зачем. Теперь ежедневно к нему падает спам, а по собственному опыту он знает, для того чтобы отписаться нужно зайти по ссылке свой профиль, найти и снять там какую-то галку а главное, помнить свой логин и пароль на давно забытом им сайте.
Его действия? «В спам!»
А по другую сторону баррикад находитесь Вы с вашей уютненькой подписочкой, полезной информацией и очень удобной системой отписки, о которой пользователь так никогда и не узнает.
И вот, с десяток таких «отписок» и гугл будет удобно отсортировывать ваши рассылки в папочку Спам (584), у ВСЕХ ваших подписчиков.
Однако многие из нас уже успели заметить: некоторые письма в Gmail при попытке отметить их «В спам!» САМИ предлагают отписаться от рассылки в один клик.
Эта фича была введена google более года назад, но лишь единицы рассылок научились ей пользоваться. И не удивительно. В рекомендациях по осуществлению массовых рассылок, лишь косвенно упоминается о том, что Вам нужно сделать.
А сделать нужно не многое.
+222
Как собрать IT-команду
4 min
1.6KСпециалист должен быть на своем месте — это позволит быть успешным и развиваться как ему, так и компании-работодателю. Это справедливо для IT-сферы, как и для любой другой. Однако айтишник — это не рядовой офисный сотрудник, и к нему нужен особый подход. В этой статье я попыталась обобщить опыт ряда IT-компаний по подбору и продвижению технического персонала.
Мифы об айтишниках
Безусловно, для работы с IT-персоналом существует своя специфика, но различия между сотрудниками-айтишниками и простыми юзерами часто преувеличиваются. Вот наиболее распространенные заблуждения:
Мифы об айтишниках
Безусловно, для работы с IT-персоналом существует своя специфика, но различия между сотрудниками-айтишниками и простыми юзерами часто преувеличиваются. Вот наиболее распространенные заблуждения:
- IT-люди очень своеобразны. Почти во всем. Для коллеги-юзера непонятно, как иметь с ними дело, мотивировать, оценивать, обучать.
- Айтишники разговаривают на своем языке. С их же стороны язык рядовых пользователей — птичий. Договориться крайне сложно.
- В IT работают люди, руководствующиеся исключительно логикой и рациональным мышлением. Эмоции им чужды.
+1
Организация живой трансляции с ip камеры на сайте
7 min
20KВведение
Задача
Рассмотрим задачу по организации на сайте живой видео трансляции с ip камеры. Наш стенд состоит из трёх составных частей:- ip камера
- медиасервер
- flash плеер в браузере на стороне клиента
+29
+16
Жизненный цикл серебряной пули
10 min
1.7KМой перевод статьи Сары Шерд “Life Cycle of a Silver Bullet”, 2003 г.
«Внимание! Выбросьте из головы другие методы оптимизации — мы открыли самый лучший. С нашим методом уровень качества у вас будет расти, а стоимость и время разработки — падать». Практически любой метод оптимизации провозглашается лучшим способом спасти молодой бизнес от проблем. К сожалению, спустя несколько лет этот же самый метод уже разгромленным и разнесённым в пух и прах, и заменяется новым. В этой притче рассказывается, как это происходит.
+8
Разработка на ассемблере в Linux
3 min
16KВообще программирование на ассемблере в Linux мало распространено и занимаются им, разве что, фанаты ассемблера. Сегодня мы и поговорим о программировании на ассемблере и инструментарий.
+23
Звоним из терминала
2 min
1.5KРешил опубликовать небольшую заметку, как можно используя базовые знания по программированию реализовать возможность звонков из терминального сервера.
Кому это нужно: в первую очередь это будет интересно тем людям(или организациям), у которых стоит терминальный сервер(НАПРИМЕР windows 2003) в нем есть некоторая программа-CRM, в которой хранятся контактная информация по клиентам. А сотрудники используют софтверные IP-телефоны.
Что у нас есть:локальная сеть, сам сервер терминалов[у нас Windows 2003 Standart], сервер IP-телефонии[Asterisk], клиентские машины[Windows XP] с установленным софтверным IP-телефоном[X-lite].
Кому это нужно: в первую очередь это будет интересно тем людям(или организациям), у которых стоит терминальный сервер(НАПРИМЕР windows 2003) в нем есть некоторая программа-CRM, в которой хранятся контактная информация по клиентам. А сотрудники используют софтверные IP-телефоны.
Что у нас есть:локальная сеть, сам сервер терминалов[у нас Windows 2003 Standart], сервер IP-телефонии[Asterisk], клиентские машины[Windows XP] с установленным софтверным IP-телефоном[X-lite].
+4
Ratings Service / Online-сервис + REST API для поиска рейтингов фильмов
6 min
1.6KRatings Service — это online-сервис, который позволяет узнать рейтинг фильма по его названию.
Отличительные особенности:
Я бы хотел рассказать о некоторых особенностях реализации и поделиться впечатлениями работы с Google App Engine / Java. Ниже вы также найдете адрес проекта на Google Code, с выложенными исходными кодами.
Отличительные особенности:
- поиск по нескольким Интернет-базам одновременно (на данный момент это КиноПоиск.Ru и КиноКопилка.ру)
- легкий интерфейс; можно пользоваться с мобильного телефона, например, через Opera Mini
- возможность получать результаты выборки в формате XML в стиле REST
- хостинг на Google App Engine / Java
- Open Source
Я бы хотел рассказать о некоторых особенностях реализации и поделиться впечатлениями работы с Google App Engine / Java. Ниже вы также найдете адрес проекта на Google Code, с выложенными исходными кодами.
+11
Транзакции InnoDB
4 min
4.5KInnoDB это транзакционный, реляционный движок работающий на основе MySQL сервера. Начиная с 2001 года он поставляется в стандартной сборке, а с версии 5.1 может устанавливаться в качестве плагина (без необходимости перекомпилировать ядро сервера). Синтаксис очень простой.
Про определение
Определение транзакционности и реляционности значат во-первых значат полноценную связанность таблиц через FK и как следствие — целостность данных при удалении рядов. С MyIsam как известно приходилось вручную удалять связанные данные в нескольких таблицах, в InnoDB — каскадное удаление одним запросом. Во-вторых поскольку для БД немыслимы параллельные версии данных как в SVN и некому эти версии объединять в одну ветку, но при этом необходима параллельная работа нескольких процессов (пользователей) с одними данными, то в качестве решения становится транзакции.
Очередь из запросов-автомобилей теперь пополняется атомарной транзакцией-автобусом. Естественно это плохо, поскольку чем длиней и дольше выполняется транзакция тем больше параллельных процессов будут ждать его. Для ускорения работы создаются остановки — типы и уровни блокировки данных. Для InnoDB по умолчанию это блокирование на уровне строки (по PK), тогда как в MyIsam атомарная операция блокирует всю таблицу.
START TRANSACTION;
...
COMMIT; -- или же ROLLBACK; если что-то пошло в логике не так
Про определение
Определение транзакционности и реляционности значат во-первых значат полноценную связанность таблиц через FK и как следствие — целостность данных при удалении рядов. С MyIsam как известно приходилось вручную удалять связанные данные в нескольких таблицах, в InnoDB — каскадное удаление одним запросом. Во-вторых поскольку для БД немыслимы параллельные версии данных как в SVN и некому эти версии объединять в одну ветку, но при этом необходима параллельная работа нескольких процессов (пользователей) с одними данными, то в качестве решения становится транзакции.
Очередь из запросов-автомобилей теперь пополняется атомарной транзакцией-автобусом. Естественно это плохо, поскольку чем длиней и дольше выполняется транзакция тем больше параллельных процессов будут ждать его. Для ускорения работы создаются остановки — типы и уровни блокировки данных. Для InnoDB по умолчанию это блокирование на уровне строки (по PK), тогда как в MyIsam атомарная операция блокирует всю таблицу.
+11
24 способа, увеличивающих вероятность индексации сайта
6 min
8.6KДалеко не все поисковые сервисы быстро и эффективно индексируют новый ресурс в Интернете. «Зубры» типа google или yahoo все схватывают на лету, надо просто немого подождать. При этом объем проиндексированного контента у них достаточно высокий. Множество поисковиков рунета (rambler, aport, altavista), а также майкрософтовские livesearch и msn тоже сами индексируют новый сайт.
Проблемы иногда возникают с индексацией в mail.ru, и его детище gogo, а также с Яндексом. Из индекса Яндекса сайты иногда пропадают, число проиндексированных поисковиком также часто меняется.
Cледует также отметить, что индексировать то может и индексируют поисковики, но если проиндексированная страница будет находиться на 10ой странице поиска, то вряд ли на нее кто-то перейдет. Разве что самый упорный. Поэтому особенно актуален вопрос именно эффективной индексации. О ней и вообще об индексации пойдет речь. Так как ориентация статьи сделана в основном на русскоязычный сегмент Интернета, то акцент слегка смещен в сторону Яндекса.
Проблемы иногда возникают с индексацией в mail.ru, и его детище gogo, а также с Яндексом. Из индекса Яндекса сайты иногда пропадают, число проиндексированных поисковиком также часто меняется.
Cледует также отметить, что индексировать то может и индексируют поисковики, но если проиндексированная страница будет находиться на 10ой странице поиска, то вряд ли на нее кто-то перейдет. Разве что самый упорный. Поэтому особенно актуален вопрос именно эффективной индексации. О ней и вообще об индексации пойдет речь. Так как ориентация статьи сделана в основном на русскоязычный сегмент Интернета, то акцент слегка смещен в сторону Яндекса.
+20
ТОП 10 самых раздражающих факторов для программиста
5 min
16KTranslation
Совсем недавно наткнулся в интернете на забавный "хит-парад" наиболее раздражающих вещей для программиста. Поскольку он был на английском — решил перевести текст и несколько адаптировать к нашим реалиям…
ТОП 10 самых раздражающих факторов для программиста
+275
Information
- Rating
- Does not participate
- Location
- Светловодск, Кировоградская обл., Украина
- Registered
- Activity