• Чего нельзя требовать и за что нельзя хвалить сотрудников, если вы хотите, чтобы они хорошо работали

    Уже давно сформулировал для себя этот подход. Возможно, он очевиден, но хуже от этого не становится.

    Сначала сами пункты.

    Никогда не требуйте и не хвалите сотрудников за:

    • вовремя приходят на работу или с обеда
    • ходят в соответствии с дресс-кодом
    • задерживаются на работе, работают на выходных

    Это не все и примеры специально выбраны простые и очевидные, но для объяснения хорошо подходят.

    Обратите внимание, что речь не только про «не хвалите», но и про «не требуйте».

    С удивлением недавно обнаружил, что до сих пор большое количество компаний требуют строгий дресс-код для всех сотрудников (даже тех, кто не вылезает из офиса и не видится с клиентами) и следит, чтобы люди приходили в 9:00.

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

    А теперь почему так? Ведь хорошо, когда сотрудник не опаздывает и ходит в офис не в рваных джинсах?
    Читать дальше →
  • Интернет – моё личное пространство

      Всё начинается с того, что человек попадает в Интернет. Он открывает для себя огромный мир информации и общения. Его контакт-лист в IM начинает наполняться контактами. Сначала это тот, кто устанавливает IM-клиент, и друзья. Потом одноклассники/одногруппники, потом коллеги по работе. Параллельно с этим растёт количество знакомых, лиц противоположного пола, приятелей.

      Человек меняет работу, и коллеги превращаются в бывших коллег. Заканчивает школу или институт, и одноклассники с одногруппниками тоже превращаются в бывших. Отношения между друзьями портятся, и с лицами противоположного пола тоже далеко не всегда расстаются мирно. И потихоньку начинает наполняться invisible-лист.

      Надоедливые коллеги, знакомые с форумов, которым ты помог как-то раз, работодатели, назойливые персонажи постоянно лезут с глупыми вопросами, присылают непонятные ссылки или анекдоты, хочется скрыться от них всех, но зачастую человек даже не догадывается, кто они. Так он переходит в режим invisible, а то и того хуже наполняет – visible-лист и становится открытым только для избранных.

      Но и тут нет спасения! Человека узнают под оригинальным ником на новых ресурсах, а кто знает реальное имя, способен отыскать его модных социальных сетях. А там уж не всегда приходится говорить о каких-то настройках приватности. Выдают и сообщения о том, когда человек последний раз здесь был или обновил свою инфу, выложил то или другое…
      Всё это похоже на фобию. Сначала invisible, потом стереть все свои фото из сети, потом удалить регистрации, сменить ник, e-mail, uin… Но рано или поздно человек приходит к тому, с чего начал и с того, зачем первый раз пришёл в Интернет – получить огромный мир информации и общения.

      Что же в итоге?

      Иногда хочется, чтобы Интернет был только твой. Почитать почту без спама, посёрфить без рекламы, сохранить полезные ссылки в сети, но не париться о том, чтобы прописать полезные другим теги, чтобы не знать, сколько ещё человек сохранили эту ссылку и сколько комментариев они написали по её поводу. Тошнит от миллиона ссылок «Комментарии: 0», «Добавить в друзья», «Что такое RSS?»… Хочется, чтобы Интернет был только для тебя.

      А иногда ставишь статус «Free for chat», в онлайне 200 контактов… И никто не пишет.
    • 20+ ресурсов, чтобы начать фрилансить

        Чувствуете, что готовы уйти с работы, самостоятельно контролировать свой день, биться за клиента и работать только над интересными задачами? Пришло время попробовать себя во фрилансе. Это совсем нелегко, а чаще труднее, чем офисная рутина. Чтобы не разочароваться в выборе формата работы, устройте себе тест-драйв — на праздниках или в выходные. Собрали площадки, где найдете задачи по душе.


        Читать дальше →
      • Заблуждения программистов относительно времени

        • Перевод
        За последние пару лет я потратил много времени на дебаггинг чужих тестов. Это была интересная работа, иногда расстраивающая, но всегда поучительная. Кто-то может подумать, что в тестах нет багов, но конечно баги есть везде, и тесты не исключение.

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

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



          Одна из основных функций десктопного клиента Облака Mail.Ru — синхронизация данных. Ее целью является приведение папки на ПК и ее представления в Облаке к одинаковому состоянию. При разработке этого механизма мы встретились с некоторыми, с первого взгляда, достаточно очевидными особенностями различных файловых и операционных систем. Однако если о них не знать, можно столкнуться с довольно неприятными последствиями (не получится загрузить или удалить файл). В этой статье мы собрали особенности, знание которых позволит вам правильно работать с данными на дисках и, возможно, убережет от необходимости срочного хотфикса.
          Читать дальше →
        • Kaggle – наша экскурсия в царство оверфита

          • Tutorial
          Kaggle — это платформа для проведения конкурсов по машинному обучению. На Хабре частенько пишут про неё: 1, 2, 3, 4, и.т.д. Конкурсы на Kaggle интересные и практичные. Первые места обычно сопровождаются неплохими призовыми (топовые конкурсы — более 100к долларов). В последнее время на Kaggle предлагали распознавать:


          И многое-многое другое.

          Мне давно хотелось попробовать, но что-то всё время мешало. Я разрабатывал много систем, связанных с обработкой изображений: тематика близка. Навыки более лежат в практической части и классических Computer Vision (CV) алгоритмах, чем в современных Machine Learning техниках, так что было интересно оценить свои знания на мировом уровне плюс подтянуть понимание свёрточных сетей.

          И вот внезапно всё сложилось. Выпало пару недель не очень напряжённого графика. На kaggle проходил интересный конкурс по близкой тематике.Я обновил себе комп. А самое главное — подбил vasyutka и Nikkolo на то, чтобы составить компанию.

          Сразу скажу, что феерических результатов мы не достигли. Но 18 место из 1.5 тысяч участников я считаю неплохим. А учитывая, что это наш первый опыт участия в kaggle, что из 3х месяц конкурса мы участвовали лишь 2.5 недели, что все результаты получены на одной единственной видеокарте — мне кажется, что мы хорошо выступили.

          О чём будет эта статья? Во-первых, про саму задачу и наш метод её решения. Во-вторых, про процесс решения CV задач. Я писал достаточно много статей на хабре о машинном зрении(1,2,3), но писанину и теорию всегда лучше подкреплять примером. А писать статьи по какой-то коммерческой задаче по очевидным причинам нельзя. Теперь наконец расскажу про процесс. Тем более что тут он самый обычный, хорошо иллюстрирующий как задачи решаются. В-третьих, статья про то, что идёт после решения идеализированной задаче в вакууме: что будет когда задача столкнётся с реальностью.


          Читать дальше →
        • Обучение машины — забавная штука: современное распознавание лиц с глубинным обучением

          • Перевод
          Вы заметили, что Фейсбук обрёл сверхъестественную способность распознавать ваших друзей на ваших фотографиях? В старые времена Фейсбук отмечал ваших друзей на фотографиях лишь после того, как вы щёлкали соответствующее изображение и вводили через клавиатуру имя вашего друга. Сейчас после вашей загрузки фотографии Фейсбук отмечает любого для вас, что похоже на волшебство:
          Читать дальше →
        • Чем полезен мономорфизм?

          • Перевод


          Выступления и посты в блогах о производительности JavaScript часто обращают внимание на важность мономорфного кода, однако обычно не дается внятного никакого объяснения, что такое мономорфизм/полиморфизм и почему это имеет значение. Даже мои собственные выступления зачастую сводятся к дихотомии в стиле Невероятного Халка: «ОДИН ТИП ХОРОШО! ДВА ТИП ПЛОХО!». Неудивительно, что когда люди обращаются ко мне за советом по производительности, чаще всего они просят объяснить, что на самом деле такое мономорфизм, откуда берется полиморфизм и что в нем плохого.

          Ситуацию осложняет еще и то, что само слово «полиморфизм» имеет множество значений. В классическом объектно-ориентированном программировании полиморфизм связан с созданием дочерних классов, в которых можно переопределить поведение базового класса. Программисты, работающие с Haskell, вместо этого подумают о параметрическом полиморфизме. Однако полиморфизм, о котором предупреждают в докладах о производительности JavaScript – это полиморфизм вызовов функции.

          Я объяснял этот механизм столькими различными путями, что наконец-то собрался и написал данную статью: теперь можно будет не импровизировать, а просто дать на нее ссылку.

          Я также попробовал новый способ объяснять вещи – изображая взаимодействие составных частей виртуальной машины в виде коротких комиксов. Кроме того, данная статья не покрывает некоторые детали, которые я посчитал незначительными, излишними или не связанными напрямую.
          Читать дальше →
        • Интерфейсы в реальном мире (ещё примеры)

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

            Вот тут вы можете узнать пару своих знакомых кранов:



            А это — очень страшный автомобильный диод, по нему только вперёд:



            Итак, если вам интересно продолжение про интерфейсы в реальном мире – заходите в пост. Осторожно, трафик.
            Читать дальше →
          • 50 социопатов на ролевой игре живого действия: Нейрономикон по Гибсону и его механики


              Рабочее место и кибердека хакера корпорации «Макрохард» Леонида Сивухина

              Привет! Есть такое увлечение – ролевые игры живого действия. Это когда разные альтернативно одарённые люди бегают по лесу в занавесках и с деревянными мечами. Я один из таких ещё с 98-го года, когда бегать в занавеске ещё не было стыдно. Естественно, лесом и фэнтези дело не ограничивается – мы чертовски любим киберпанк и всё, что с ним связано.

              На праздниках под Тулой прошла игра «Нейрономикон» по событиям в Бостоне будущего с повышенной плотностью ИТ-специалистов и людей, стремящихся в них поиграть. Я сейчас расскажу о самой игре как о виде отдыха, покажу, чем и что моделируется (включая разные импланты как из Deus Ex) и расскажу о механиках, лежащим за всем этим.

              Пока же краткая вводная: в мире игры в 2010 году уже были действующие искусственные интеллекты (правда, работающие под ограничениями полиции Тьюринга), дельфины признаны второй разумной расой, киберимпланты – самый эффективный и дешёвый вид медицины. Действие игры проходит через 8 лет после третьей мировой войны в ещё слабо фонящих развалинах Бостона, где где-то погребён мощнейший ИИ.
              Читать дальше →
            • Специализация по алгоритмам и структурам данных от Яндекса, Вышки, UC San Diego и CSC

                Какие алгоритмы используют социальные сети, чтобы осуществлять поиск по графу друзей? Как телекомпании выбирают, какую рекламу показывать, чтобы максимизировать прибыль? Как собрать геном из миллионов фрагментов? Как вычислить кратчайший путь из Нью-Йорка в Маунтин Вью в тысячи раз быстрее, чем это делают классические алгоритмы?

                На Coursera появилась еще одна полезная специализация, созданная при участии Яндекса, — «Алгоритмы и структуры данных». Среди преподавателей не только представители Яндекса, Вышки, петербургского Computer Science Center, но и лекторы Калифорнийского университета в Сан-Диего, поэтому на этот раз все курсы специализации англоязычные.



                Всего их пять, в конце слушателей ждет финальный проект. Один из них связан с биоинформатикой, второй — с поиском кратчайших путей в настоящих дорожных сетях и графах. В формате специализации все материалы доступны бесплатно. Оплата понадобится только в том случае, если вы захотите отправлять домашние задания на проверку и получить сертификат. Тогда вам нужно будет запрограммировать и сдать около 100 задач в тестирующую систему. Сделать это можно на C, C++, C#, Haskell, Java, JavaScript, Python2, Python3, Ruby и Scala.

                Сегодня начинается первый курс — Algorithmic Toolbox. Под катом — программа специализации, информация о преподавателях и их мнение о том, кому она будет полезна и почему.
                Читать дальше →
              • Распознавание некоторых современных CAPTCHA

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

                Работа заключалась в распознавании CAPTCHA, используемых крупными операторами сотовой связи в формах отправки SMS, и демонстрации недостаточной эффективности применяемого ими подхода. Чтобы не задевать ничью гордость, будем называть этих операторов иносказательно: красный, жёлтый, зелёный и синий.

                Читать дальше →
              • GOTO or not GOTO вот в чём вопрос

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

                Владимир Мегре




                Статья посвящается Зацепину П.М., выдающемуся инженеру Алтайского государственного университета, под чьим чутким руководством многие студенты, включая автора статьи, постигали магию инженерного творчества.

                Введение


                Спор о возможности использования в программах оператора GOTO ведётся уже очень давно (официальным его началом признана статья Дейкстры «О вреде оператора GOTO», опубликованная в 1968 году [2]). Через три года мы будем праздновать 50-летний юбилей этого спора. Это хороший повод, чтобы наконец-то «расставить все точки над i» и прекратить спор.

                Цитата в эпиграфе выбрана неслучайно. Она в точности отражает текущую ситуацию в споре про GOTO. В нашем случае «комната за закрытой дверью» – это понятная всем постановка задачи. Пока, к сожалению, такой постановки задачи озвучено не было, поэтому споры и не угасают. Противоборствующие стороны спорят хоть и о схожих, но всё-таки о разных вещах, поэтому и не могут найти компромисса.

                Давайте займём в этом споре нейтральную сторону, и беспристрастно во всём разберёмся. Рассмотрим доводы «противников» и «защитников» оператора GOTO и решим, «кто из них прав, а кто виноват».
                Читать дальше →
              • Программируем 1С на Ruby

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

                Вместо этого можно воспользоваться любым современным языком, имеющим библиотеку для работы с Win32 OLE. Например, JavaScript (Win32 OLE поддерживает Node.JS) или Ruby (нужная библиотека входит в набор стандартных библиотек языка).

                Ниже будет описан некоторый практический опыт работы с OLE-интерфейсом на Ruby. Описание не претендует на полноту, отобрано и описано только то, что нужно для простой автоматизации или интеграции на уровне данных: чтение-запись справочников и документов, выполнение запросов.
                Читать дальше →
                • +15
                • 16,5k
                • 8
              • Изначально ущербная система подготовки к переговорам



                  Проблема в том, что в любом традиционном обучении переговорам предполагается, что стороны должны в итоге договориться.

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

                  Давайте ещё раз. Бывают хорошие условия, бывают нормальные, бывают плохие. Одни можно превратить в другие. Но если вы понимаете, что из плохих условий не сделать нормальные, то единственный логичный выход – остановить переговоры как можно быстрее. Вам не нужны компромиссы, странные пути решения и долгие разговоры. Вам нужно встать и уйти.
                  Читать дальше →
                • Вы неправильно пишете животных

                    Животные – это платформы с очень ограниченной памятью, вычислительными способностями и возможностями модификаций. Разработчикам энимал-сцены приходится выдавать практически гениальные низкоуровневые алгоритмы. Правда, большое количество хардкода вызывает характерные проблемы с отсутствием проверки в экзотических условиях. Та же фильтрация входных данных делается очень и очень криво.


                    Уязвимость рекурсивных алгоритмов навигации муравья: спираль смерти

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

                    Но пойдём далее. Я не знаю, кто разрабатывал архитектуру ящериц, но они бегают в одном процессе, а дышат в другом. При этом платформа не поддерживает многозадачность, поэтому костыль с максимальной длиной бега в 4-6 секунд просто эпичен.
                    Читать дальше →
                  • Обзор специализированных способов обхода блокировок в интернете

                      Представляю вашему вниманию обзор и мои субъективные оценки некоторых специализированных способов обхода блокировок со стороны провайдеров или сетевых администраторов.

                      1. Аддоны для браузеров


                      ZenMate (Chromium-based, Firefox, Android, iOS)

                      • Удобство использования: 5/5
                      • Скорость: 5/5
                      • Шифрование трафика: Да (TLS)
                      • Анонимность: Да
                      • Проксирование всего трафика: Да
                      • Выборочное проксирование: Да

                          Описание:
                              Хороший, быстрый аддон.
                              На момент тестирования было доступно 5 прокси в разных странах.

                          Плюсы:
                              Высокая скорость работы аддона
                              Быстрые прокси

                          Минусы:
                              Требуется регистрация в сервисе
                      Читать дальше →
                    • Интервью с легендой спортивного программирования Петром Митричевым



                        Говорят, когда он появился на свет, к нему заглянул сам Дональд Кнут. Говорят, когда его пригласили работать в Google, он за 15 минут переписал весь поисковый алгоритм 16 раз. Говорят, он с улыбкой следит за прогрессом квантовых вычислений, так как при виде его числа от страха факторизуются сами. Но мы точно знаем одно: Пётр — настоящий бог спортивного программирования.
                        Читать дальше →
                        • +77
                        • 71k
                        • 8
                      • Ruby 2.1 в деталях (Часть 3)

                        • Перевод

                        Метод #singleton_class? для Module/Class

                        В классы Module и Class был добавлен метод #singleton_class?, который, как и следовало ожидать, возвращает, является ли получатель мета-классом (singleton)

                        class Example
                          singleton_class?     #=> false
                          class << self
                            singleton_class?   #=> true
                          end
                        end
                        

                        Читать дальше →
                        • +24
                        • 8,6k
                        • 5
                      • Ruby 2.1 в деталях (Часть 2)

                        • Перевод

                        Refinements

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

                        Теперь к методу #using для активации уточнений на уровне файла добавился метод Module#using для активации в пределах модуля. Однако использование уточнений по-прежнему ограничено лексической областью видимости, т.е. они не будут активны при повторном открытии модуля.
                        Читать дальше →
                        • +36
                        • 10,8k
                        • 7