• Стартап, вестинг, клифф: доли в бизнесе и права участников

    • Translation
    Один из самых привлекательных моментов в присоединении к стартапу — получение опционов (прав на приобретение определенной доли в стартапе по фиксированной цене). Это предоставляет право владения долей компании и помогает сбалансировать интересы руководства и сотрудников. Впрочем, один аспект в обыкновенном пакете опционов вызывает горячие дискуссии между сотрудниками и руководителями, и этот аспект — годовой порог (cliff). Мы в Alconost перевели для вас статью, в которой понятно и практично написано о клифф-вестинге, опционах и рисках, связанных со всем этим.


    Читать дальше →
    • +26
    • 47.7k
    • 9
  • Lock-free структуры данных. Основы: Атомарность и атомарные примитивы


      Построение lock-free структур данных зиждется на двух китах – атомарных операциях и способах упорядочения доступа к памяти. В этой статье речь пойдет об атомарности и атомарных примитивах.

      Анонс. Спасибо за теплый прием Начал! Вижу, что тема lock-free интересна хабрасообществу, это меня радует. Я планировал построить цикл по академическому принципу, плавно переходя от основ к алгоритмам, попутно иллюстрируя текст кодом из libcds. Но часть читателей требует зрелищ не мешкая показать, как пользоваться библиотекой, особо не рассусоливая. Я согласен, в этом есть свой резон. В конечном счете, и мне не так интересно, что там внутри boost, — опишите, как его применять! Поэтому свой эпический цикл я разделю на три части: Основы, Внутри и Извне. Каждая статья эпопеи будет относится к одной из частей. В Основах будет рассказываться о низкоуровневых вещах, вплоть до строения современных процессоров; это часть для почемучек вроде меня. Внутри будет освещать интересные алгоритмы и подходы в мире lock-free, — это скорее теория о том, как реализовать lock-free структуру данных, libcds будет неисчерпаемым источником C++ кода. В Извне будут статьи о практике применения libcds, — программные решения, советы и FAQ. Извне будет питаться вашими вопросами/замечаниями/предложениями, дорогие хабражители.

      А пока я судорожно готовлю начало Извне, — первая часть Основ. Статья во многом не о C++ (хотя и о нем тоже) и даже не о lock-free (хотя без atomic lock-free алгоритмы неработоспособны), а о реализации атомарных примитивов в современных процессорах и о базовых проблемах, возникающих при использовании таких примитивов.
      Атомарность — это первый круг ада низкий уровень из двух.
      Читать дальше →
    • Подробно о внутренней кухне AngularJS

      • Translation
      У фреймворка AngularJS есть несколько интересных решений в коде. Сегодня мы рассмотрим два из них – как работают области видимости и директивы.

      Первое, чему обучают всех в AngularJS – директивы должны взаимодействовать с DOM. А больше всего новичка запутывает процесс взаимодействия между областями видимости, директивами и контроллерами. В этой статье мы рассмотрим подробности работы областей видимости и жизненный цикл Angular-приложения.

      Если в следующей картинке вам что-то непонятно – эта статья для вас.

      image

      (В статье рассматривается AngularJS 1.3.0)
      Читать дальше →
      • +28
      • 46.6k
      • 4
    • Почему вам НЕ стоит использовать AngularJs

        Много времени прошло с момента появления AngularJs (в масштабах веб-технологий конечно). Сейчас в интернетах есть огромное количество постов восхваляющих этот фреймворк до небес, что это манна небесная не иначе, а критики не так уж и много как он того заслуживает. Но такие статьи уже потихоньку начинают появляться, и меня это радует, надеюсь индустрия переболеет ангуляром так же, как переболела MooTools, Prototype, %какой-нибудь новый язык под JVM%, %другая-супер-революционная-технология%. Не знаю почему, но в IT-области такие революционные технологии, которые поднимают шум, а потом пропадают, появляются довольно часто. Хороший разработчик должен уметь отличать очередную модную технологию, от работающего инструмента. И для этого очень важно критически смотреть на вещи. Моя статья — это компиляция самых весомых выводов из других статей, и моих личных умозаключений. Ангуляр создает хороший вау-эффект, когда видишь его впервые: «ух ты, я написал ng-repeat, и реализовал эту логику одними тегами и все само обновляется!», но как только приходится реализовывать реальные приложения, а не очередной TODO-лист, то все становиться очень печально. Сразу хочу сказать, что фреймворк я знаю хорошо, даже больше чем мне хотелось бы его знать, я программировал на нем в течении 2 лет. И для следующего проекта я его точно не выберу, и это хорошо, все мы учимся на ошибках. Так что же не так с ангуляром? Тут нет однозначного ответа, слишком много разных недостатков, которые создают такой облик фреймворку. Если одним словом – непродуманная архитектура. Под катом я привожу конкретику, так что устраивайтесь поудобнее. ДА НАЧНЕТСЯ ХОЛЛИ ВАР!
        Читать дальше →
      • Семь принципов создания современных веб-приложений

        • Translation
        • Tutorial
        Эта статья основана на моей презентации с конференции BrazilJS в августе 2014 года. Она базируется на идеях, о которых я писал в блоге недавно, в основном, в связи с UX и производительностью.

        Я хочу представить 7 действенных принципов для веб-сайтов, которые хотят применить JavaScript для управления UI. Эти принципы являются результатом моей работы как веб-дизайнера, но также как давнего пользователя WWW.

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

        В то же время существует ряд вопросов относительно его роли и конкретного использования, на которые многие затрудняются ответить, в том числе авторы фреймворков и библиотек.

        • Должен ли JavaScript использоваться как замена функциям браузера: история, навигация, рендеринг?
        • Умирает ли бэкенд? Нужно ли вообще рендерить HTML?
        • Правда ли, что будущее за приложениями на одной странице (Single Page Applications, SPA)?
        • Должен ли JS генерировать страницы на веб-сайте и рендерить страницы в веб-приложениях?
        • Нужно ли использовать техники вроде PJAX или TurboLinks?
        • Каково точное отличие между веб-сайтом и веб-приложением? Должно ли остаться что-то одно?
        Читать дальше →
      • Scala. Введение

          Привет хабралюди.

          Не так давно я заинтересовался одним из многочисленных ныне языков под JVM — Scala. Причин тому много, основная — всё нарастающее со временем чувство неудобства при работе с cpp-подобными языками. Взгляд мой попеременно падал на Ruby, Groovy, Python, но все они оставляли впечатление инструментов, не совсем подходящих для моего обычного круга рабочих задач (Python-таки хорош, но у нетипизированных языков есть свои ограничения). Scala же, напротив, показалась вполне годным языком. Так как поиск по хабру никаких статей о ней не выловил (было несколько, но мягко говоря не вводных), я решил написать маленький обзор и поделиться им с массами.
          По возможности коротко о кажется главном
        • Дизайн будильника моей мечты

            Нет, не здоровенного. А просто удобного будильника для Андроида. После долгих поисков на Маркете я так и не смог найти будильник, который мне было бы приятно использовать. Поэтому в этой статье я буду проектировать будильник таким, каким бы я сам хотел его видеть.

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

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

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

            И в-третьих, в нём нет никаких математических примеров для отключения звонка. Так что для любителей математики он не подойдёт.

            Дисклаймер. Вполне возможно, у вас уже есть будильник который вас полностью устраивает. Что ж, тогда эта статья вряд ли вам будет интересна. А для остальных я расскажу о проектировании будильника
            под катом
          • Определение местоположения по mac адресу роутера

              image

              1. Узнаем MAC–адрес WiFi роутера, через который вы выходите в интернет. (Через веб–интерфейс, дать arp–запрос «arp -a», посмотреть на обратной стороне девайса.)

              2. Заходим по адресу samy.pl/mapxss

              3. Вбиваем в текстовое поле MAC–адрес и жмем «Search MAC».

              Как это работает?
              Читать дальше →
            • Особенности использования GD-lib на хостинге PHP c ограничеными ресурсами

                Данной проблемой пришлось занятся после случая на хостинге «Х», на котором достаточно небольшие изобржаения невозможно было преобразовать, используя эту библиотеку. Но самое противное заключалось в том что скрипт просто умирал, оставляя информацию только в логах. Поэтому пришлось выяснить
                чтобы такого сделать чтоб не умирал
              • Как не стать спамером со своей уютной рассылочкой

                  image
                  Пользователь когда-то подписался на рассылку, но уже забыл когда, и главное зачем. Теперь ежедневно к нему падает спам, а по собственному опыту он знает, для того чтобы отписаться нужно зайти по ссылке свой профиль, найти и снять там какую-то галку а главное, помнить свой логин и пароль на давно забытом им сайте.
                  Его действия? «В спам!»

                  А по другую сторону баррикад находитесь Вы с вашей уютненькой подписочкой, полезной информацией и очень удобной системой отписки, о которой пользователь так никогда и не узнает.

                  И вот, с десяток таких «отписок» и гугл будет удобно отсортировывать ваши рассылки в папочку Спам (584), у ВСЕХ ваших подписчиков.

                  Однако многие из нас уже успели заметить: некоторые письма в Gmail при попытке отметить их «В спам!» САМИ предлагают отписаться от рассылки в один клик.

                  Эта фича была введена google более года назад, но лишь единицы рассылок научились ей пользоваться. И не удивительно. В рекомендациях по осуществлению массовых рассылок, лишь косвенно упоминается о том, что Вам нужно сделать.
                  А сделать нужно не многое.
                  Читать дальше →
                • Как собрать IT-команду

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

                    Мифы об айтишниках
                    Безусловно, для работы с IT-персоналом существует своя специфика, но различия между сотрудниками-айтишниками и простыми юзерами часто преувеличиваются. Вот наиболее распространенные заблуждения:
                    • IT-люди очень своеобразны. Почти во всем. Для коллеги-юзера непонятно, как иметь с ними дело, мотивировать, оценивать, обучать.
                    • Айтишники разговаривают на своем языке. С их же стороны язык рядовых пользователей — птичий. Договориться крайне сложно.
                    • В IT работают люди, руководствующиеся исключительно логикой и рациональным мышлением. Эмоции им чужды.

                    Читать дальше →
                  • Организация живой трансляции с ip камеры на сайте

                      Введение

                      Задача
                      Рассмотрим задачу по организации на сайте живой видео трансляции с ip камеры. Наш стенд состоит из трёх составных частей:
                      • ip камера
                      • медиасервер
                      • flash плеер в браузере на стороне клиента
                      Читать дальше →
                    • jQuery.colorit — подсветка значений в унылых таблицах

                        image
                        Плагин ColorIt (он же «Колорит») превращает скучные таблицы в цветные мозаики, облегчая восприятие данных. Одного взгляда на таблицу будет достаточно, чтобы понять общую картину («среднюю температуру по больнице»), а также отыскать экстремальные значения.
                        Возможности и способы применения
                      • Жизненный цикл серебряной пули

                          Мой перевод статьи Сары Шерд “Life Cycle of a Silver Bullet”, 2003 г.

                          «Внимание! Выбросьте из головы другие методы оптимизации — мы открыли самый лучший. С нашим методом уровень качества у вас будет расти, а стоимость и время разработки — падать». Практически любой метод оптимизации провозглашается лучшим способом спасти молодой бизнес от проблем. К сожалению, спустя несколько лет этот же самый метод уже разгромленным и разнесённым в пух и прах, и заменяется новым. В этой притче рассказывается, как это происходит.



                          Читать дальше →
                        • Звоним из терминала

                            Решил опубликовать небольшую заметку, как можно используя базовые знания по программированию реализовать возможность звонков из терминального сервера.
                            Кому это нужно: в первую очередь это будет интересно тем людям(или организациям), у которых стоит терминальный сервер(НАПРИМЕР windows 2003) в нем есть некоторая программа-CRM, в которой хранятся контактная информация по клиентам. А сотрудники используют софтверные IP-телефоны.

                            Что у нас есть:локальная сеть, сам сервер терминалов[у нас Windows 2003 Standart], сервер IP-телефонии[Asterisk], клиентские машины[Windows XP] с установленным софтверным IP-телефоном[X-lite].
                            Читать дальше →
                          • Ratings Service / Online-сервис + REST API для поиска рейтингов фильмов

                              Ratings Service — это online-сервис, который позволяет узнать рейтинг фильма по его названию.

                              image

                              Отличительные особенности:
                              1. поиск по нескольким Интернет-базам одновременно (на данный момент это КиноПоиск.Ru и КиноКопилка.ру)
                              2. легкий интерфейс; можно пользоваться с мобильного телефона, например, через Opera Mini
                              3. возможность получать результаты выборки в формате XML в стиле REST
                              4. хостинг на Google App Engine / Java
                              5. Open Source

                              Я бы хотел рассказать о некоторых особенностях реализации и поделиться впечатлениями работы с Google App Engine / Java. Ниже вы также найдете адрес проекта на Google Code, с выложенными исходными кодами.
                              Читать дальше →
                            • Транзакции InnoDB

                                InnoDB это транзакционный, реляционный движок работающий на основе MySQL сервера. Начиная с 2001 года он поставляется в стандартной сборке, а с версии 5.1 может устанавливаться в качестве плагина (без необходимости перекомпилировать ядро сервера). Синтаксис очень простой.
                                START TRANSACTION;
                                ...
                                COMMIT; -- или же ROLLBACK; если что-то пошло в логике не так

                                Про определение


                                Определение транзакционности и реляционности значат во-первых значат полноценную связанность таблиц через FK и как следствие — целостность данных при удалении рядов. С MyIsam как известно приходилось вручную удалять связанные данные в нескольких таблицах, в InnoDB — каскадное удаление одним запросом. Во-вторых поскольку для БД немыслимы параллельные версии данных как в SVN и некому эти версии объединять в одну ветку, но при этом необходима параллельная работа нескольких процессов (пользователей) с одними данными, то в качестве решения становится транзакции.
                                Очередь из запросов-автомобилей теперь пополняется атомарной транзакцией-автобусом. Естественно это плохо, поскольку чем длиней и дольше выполняется транзакция тем больше параллельных процессов будут ждать его. Для ускорения работы создаются остановки — типы и уровни блокировки данных. Для InnoDB по умолчанию это блокирование на уровне строки (по PK), тогда как в MyIsam атомарная операция блокирует всю таблицу.

                                Читать дальше →
                                • +11
                                • 1.1k
                                • 2
                              • 24 способа, увеличивающих вероятность индексации сайта

                                  Далеко не все поисковые сервисы быстро и эффективно индексируют новый ресурс в Интернете. «Зубры» типа google или yahoo все схватывают на лету, надо просто немого подождать. При этом объем проиндексированного контента у них достаточно высокий. Множество поисковиков рунета (rambler, aport, altavista), а также майкрософтовские livesearch и msn тоже сами индексируют новый сайт.
                                  Проблемы иногда возникают с индексацией в mail.ru, и его детище gogo, а также с Яндексом. Из индекса Яндекса сайты иногда пропадают, число проиндексированных поисковиком также часто меняется.
                                  Cледует также отметить, что индексировать то может и индексируют поисковики, но если проиндексированная страница будет находиться на 10ой странице поиска, то вряд ли на нее кто-то перейдет. Разве что самый упорный. Поэтому особенно актуален вопрос именно эффективной индексации. О ней и вообще об индексации пойдет речь. Так как ориентация статьи сделана в основном на русскоязычный сегмент Интернета, то акцент слегка смещен в сторону Яндекса.
                                  Читать дальше →
                                • ТОП 10 самых раздражающих факторов для программиста

                                  • Translation
                                  Совсем недавно наткнулся в интернете на забавный "хит-парад" наиболее раздражающих вещей для программиста. Поскольку он был на английском — решил перевести текст и несколько адаптировать к нашим реалиям…

                                  ТОП 10 самых раздражающих факторов для программиста


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