• Гугл-программисты. Как идиот набрал на работу идиотов

      В стародавние времена я, на постоянной основе, занимался техническими собеседованиями – отбирал кандидатов на должность программиста в компанию. У меня была простая, понятная, шикарная методика (не мной придуманная). Чувак сначала проходил длинное собеседование по куче разнообразных вопросов, потом решал несколько задач. На бумаге, как мы делали в ВУЗе.

      Оглядываясь назад, понимаю – отбор действительно работал шикарно. Все, кого я тогда отобрал, стали уважаемыми в нашей деревне специалистами. Больше половины из них давно открыли собственный it-бизнес, в самых разных сферах – от 1С до разработки CRM-систем.

      Вот этот опыт и замутил моё сознание. Настолько, что я решил поменять методику – подумал, что дело не в ней, а во мне. Я есть великий специалист по техническим собеседованиям.
      Читать дальше →
    • Беспроводной DIY датчик температуры и влажности с e-paper дисплеем

        Всем привет! Сегодня хочу рассказать читателям о своем DIY проекте датчика температуры и влажности с e-ink дисплеем. Это будет некая обзорная статья об этапах создания устройства, будет много картинок. Идея этого проекта родилась около двух лет назад, примерно тогда я увлекся беспроводными автономными устройствами. Целью проекта было создание небольшого девайса для знакомства и изучения дисплеев на электронных чернилах. Было решено на плату добавить датчик температуры, что бы можно было выводить какие то полезные данные на экран, ну и передавать данные далее в систему умного дома.


        Читать дальше →
      • Магические сигнатуры методов в C#

        • Translation

        Представляю вашему вниманию перевод статьи The Magical Methods in C# автора CEZARY PIĄTEK.


        Есть определенный набор сигнатур методов в C#, имеющих поддержку на уровне языка. Методы с такими сигнатурами позволяют использовать специальный синтаксис со всеми его преимуществами. Например, с их помощью можно упростить наш код или создать DSL для того, чтобы выразить решение проблемы более красивым образом. Я встречаюсь с такими методами повсеместно, так что я решил написать пост и обобщить все мои находки по этой теме, а именно:


        • Синтаксис инициализации коллекций
        • Синтаксис инициализации словарей
        • Деконструкторы
        • Пользовательские awaitable типы
        • Паттерн query expression
        Читать дальше →
      • Программные IP-АТС и нагрузочное тестирование

        Всем доброго дня! Вот уже несколько лет я занимаюсь IP-телефонией и стал замечать, что хоть и Интернет полон информации, я говорю не только про российский сегмент, но найти иной раз нужную можно только на каком-либо “заброшенном форуме”, а то ее и вовсе нет. Если информации о IP-телефонии и самом протоколе sip предостаточно, то данных, как строится программная IP-АТС, как происходит ее тестирование и отладка по понятным причинам нет, либо есть, но написаны таким языком, что понять может лишь тот, кто много лет работает в данной сфере.

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

        Пожалуй, хватит лирики, начнем как всегда с теории. Так как данный пост будут читать пользователи с различным уровнем знаний, постараюсь все разложить коротко и ясно.
        Читать дальше →
      • Подключение к session в Java и Python. HttpURLConnection и CookieManager (Java). Requests(Python)

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

        1. На адрес http://localhost:8080/login отправляется пустой GET запрос.
        2. Сервер присылает формочку для заполнения логина и пароля, а также присылает Cookie вида «JSESSIONID=094BC0A489335CF8EE58C8E7846FE49B».
        3. Заполнив логин и пароль, на сервер отправляется POST запрос с полученной ранее Cookie, со строкой в выходном потоке «username=Fox&password=123». В Headers дополнительно указывается «Content-Type: application/x-www-form-urlencoded».
        4. В ответ сервер нам присылает новую cookie c новым «JSESSIONID=». Сразу же происходит переадресация на http://localhost:8080/ путём GET запроса с новой Cookie.
        5. Далее можно спокойно использовать остальное API сервера, передавая последнее Cookie в каждом запросе.

        Рассмотрим, как это можно реализовать на Java и на Python.


        Читать дальше →
      • Сайты для обучения программированию: Топ 100

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

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

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

            Всем привет! Хочу очередной раз поднять тему про найм. Только я собираюсь поговорить об этом с точки зрения кандидата, а не работодателя. Ведь собеседование, вопреки многим стереотипам, процесс двусторонний — вопросы может задавать не только интервьюер, но и сам соискатель. За прошлый год я провёл порядочное количество собеседований, и абсолютное большинство кандидатов огорчило меня отсутствием вопросов о компании, всего 5 человек стали меня расспрашивать о работе.

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

            image
            Читать дальше →
          • Как автоматизировать сбор и очистку семантики от дублей и мусора

              Как автоматизировать сбор и очистку семантики от дублей и мусора

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


              На примере интернет-магазина электроники по шагам показываем, как с помощью инструментов Click.ru собрать пул запросов для контекста и привести его в юзабельный вид.

              Читать дальше
            • 38+ сайтов для размещения контента с целью продвижения своего бизнеса и личного бренда


                В статье перечислены и дано краткое описание сайтов для размещения контента с целью продвижения бизнеса и личного бренда, где можно опубликовать материал бесплатно или получить за него денежное вознаграждение
                Читать дальше →
              • IOptions и его друзья

                Во время разработки часто возникает потребность для вынесения параметров в конфигурационные файлы. Да и вообще — хранить разные конфигурационный константы в коде является признаком дурного тона. Один из вариантов хранения настроек — использования конфигурационных файлов. .Net Core из коробки умеет работать с такими форматами как: json, ini, xml и другие. Так же есть возможность писать свои провайдеры конфигураций. (Кстати говоря за работу с конфигурациями отвечает сервис IConfiguration и IConfigurationProvider — для доступа к конфигурациям определенного формата и для написания своих провайдеров)


                image


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

                Читать дальше →
              • Как дочка Роснано, продавшая с Ростехом тысячи камер в школы, делает «российские» камеры c дырявой китайской прошивкой

                  Всем привет!

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

                  О том, как мы начинали, я писал в статье.

                  С тех пор многое изменилось — мы стали поддерживать еще больше чипсетов, например, таких как mstar и fullhan, познакомились и подружились с большим количеством как иностранных, так и отечественных производителей IP камер.

                  Вообще, к нам часто приходят разработчики камер, показать новое оборудование, обсудить технические моменты работы прошивок или техпроцесс производства.


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

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

                  Но, однако, сегодня, читая новости в фейсбуке и попивая утренний кофе — чуть не разлил его, прочитав новость о том, что дочка Роснано, компания ЭЛВИС-НеоТек, совместно с Ростехом поставит десятки тысяч камер в школы.

                  Под катом — детали того, как мы их тестили.
                  Читать дальше →
                • Умный дом в умном городе

                  Майским утром 2022 года, до того как вы проснулись, в окружающем цифровом мире произошло множество событий. Датчик сна и пробуждения совместно с умной кроватью зафиксировали ваш режим отдыха. Данные были отправлены через шлюз IoT на облачный сервис, который в свою очередь отправляет отчеты на ваше мобильное устройство.

                  Двухконтурный котел, система полива домашних растений, системы безопасности и видеонаблюдения обслуживаются другим облачным сервисом, подключенным к распределенной сети Wi-Fi седьмого поколения. У вас нет необходимости в стационарном компьютере как таковом, поскольку смартфон и технологии VR/AR предоставляют более удобную в использовании систему. В арсенале вашего умного дома находится шлюз туманных и граничных вычислений, подключенный к провайдеру интернета 5G и к глобальной паутине. Проводное соединение не соответствует вашему образу жизни, вы мобильны и независимы от места своего пребывания. Можно и дальше развивать эту историю и неважно, сбудется она или нет, но ее близость к современной реальности очевидна.



                  image

                  Читать дальше →
                • Умная хрущёвка на максималках. Продолжение

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

                    • Полную беспроводную автоматизацию всего освещения.
                    • Установил кнопку «выключить всё».
                    • Сделал возможным полное удаленное обесточивание квартиры (включая и сам сервер управления вместе с контроллером) и обратное удаленное включение.
                    • Применил электронакладки (устройства поворота) для кранов на воду.


                    Подъездный щит жилого дома с оборудованием для удаленного обесточивания квартиры
                    Хрущёвка в полном фарше
                  • Двухфакторая аутентификация VPN/Mikrotik – просто и масштабируемо

                    Здравствуйте!

                    На написание данной статьи меня побудило прочтение аналогичного содержания статьи пользователя nkusnetsov. По количеству просмотров видно, что сообществу интересна данная тема.

                    Поэтому я решил поделиться с вами собственным решением, которое было ранее реализовано мной и обладает:

                    • Низким уровнем вхождения и простотой кода (для понимания/отладки другим сотрудником)
                    • Простые скрипты ROS не создают никакой нагрузки и работают даже на hAP Lite
                    • Масштабируемость – возможность подключения большого количества VPN-шлюзов с целью снижения нагрузки или географического распределения
                    • Возможность использования Mikrotik CHR в качестве VPN-сервера
                    • «1хN» – 1 SMS-шлюз на неограниченное количество роутеров с возможностью расширения при росте нагрузки
                    • Возможность привязки отдельного роутера к «конкретному» модему (для чего? – об этом позже)
                    • Использование всего одного php скрипта на удаленном сервере
                    • Не важно какое устройство инициировало VPN-соединение, авторизация по ссылке из SMS
                    • Ведение log'а всех авторизаций на сервере (можно вкл/выкл)
                    • Увеличение отказоустойчивости и снижение нагрузки системы путем отправки SMS рандомно с нескольких модемов
                    • Возможность отправки SMS через платные SMS-шлюзы (в коде на примере smsc.ru)
                    • Функция Firewall – доступ только у роутеров занесенных в список (можно вкл/выкл)
                    • Новое: Отправка кодов через Synology Chat и Telegram Bot. Причем различным пользователям уведомления могут доставляться по различным каналам.


                    Если вас интересует данная тематика, сохраните статью в закладки, я буду периодически её обновлять, по мере расширения функционала скрипта.
                    Читать дальше →
                  • Автоматизация квартиры

                    Предыстория


                    Давняя мечта об автоматизации квартиры начала свое превращение в реальность с покупки квартиры в новостройке. Уже на этапе планирования ремонта вырисовались основные требования к инженерным сетям:

                    1. гибкое управление освещением, водоснабжением, вентиляцией, отоплением и силовыми нагрузками;
                    2. возможность реализации сценариев;
                    3. удаленное управление и оповещение;
                    4. централизованное отключение всего освещения;
                    5. централизованное отключение неприоритетных нагрузок и водоснабжения;
                    6. в перспективе – возможность голосового управления.
                    Читать дальше →
                  • Большой гайд по Google Trends: как читать всю эту статистику и научиться ловить тренды

                      Большой гайд по Google Trends: как читать всю эту статистику и научиться ловить тренды

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


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

                      Читать дальше
                    • Двухфакторная аутентификация пользователей VPN посредством MikroTik и SMS

                        Здравствуйте коллеги! Сегодня, когда накал страстей вокруг «удалёнки» немного спал, большинство админов победило задачу удаленного доступа сотрудников к корпоративной сети, пришло время поделиться моей давней наработкой по повышению безопасности VPN. В этой статье не будет модных ныне IPSec IKEv2 и xAuth. Речь пойдет о построении системы двухфакторной аутентификации (2FA) пользователей VPN, когда MikroTik выступает в качестве VPN-сервера. А именно, когда используются «классические» протоколы типа PPP.


                        Читать дальше →
                        • +13
                        • 12.3k
                        • 6
                      • Все финансовые рынки мира в API Яху Финанс

                          В этой статье я расскажу об API агрегатора финансовых данных Yahoo! Finance. В рассказе есть один нюанс — официальное API Яху Финанс было закрыто три года назад, однако практически сразу же появилась его недокументированная работоспособная версия, которая жива до сих пор. Хочу в исследовательских целях рассказать об использовании этой работоспособной версии подробнее.
                          Тем более, что список рынков, данные с которых можно получать через Яху Финанс огромен. На текущий момент в нем 79 стран, включая и Россию.


                          Apple Inc. (AAPL) на сайте и в API Яху Финанс
                          Разбор API Yahoo! Finance
                        • Outer Join в LINQ

                          LINQ — как много было придумано в C# лишь для того чтобы мы могли наслаждаться прелестями Language Integrated Query. А именно:

                          • Generics
                          • Extension Methods
                          • Lamda expressions
                          • Expression trees
                          • Anonumus types
                          • Object initializers
                          • Type inferring

                          И это все чтобы мы могли написать нечто вроде такого:

                          	var query = 
                          		from itemA in listA
                          		join itemB in listB
                          			on itemA.Key equals itemB.Key
                          		select new {itemA, itemB};
                          	

                          Нельзя не согласиться — впечталяет.

                          И среди всего этого синтаксического сахара была ложка дегдя которая мне не давала нормально выспаться :)

                          Это тотальное отсутствие поддержки OUTER JOIN. Но как оказалось деготь с легкостью превращается… превращается… превращается…
                          Читать дальше →
                          • +11
                          • 4.3k
                          • 6
                        • MVVM: полное понимание (+WPF) Часть 1

                          В настоящей статье задействован мой опыт доведения некоторого числа студентов до полного и окончательного понимания паттерна MVVM и реализации его в WPF. Паттерн описывается на примерах возрастающей сложности. Сначала теоретическая часть, которая может использоваться безотносительно конкретного языка, затем практическая часть, в которой показано несколько вариантов реализации коммуникации между слоями с использованием WPF и, немножко, Prism.

                          Зачем вообще нужно использовать паттерн MVVM? Это ведь лишний код! Написать тоже самое можно гораздо понятнее и прямолинейнее.

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