Pull to refresh
58
0
Аббасов Александр @vodka_ru

Предприниматель, Стартапер, Программист

Send message

Где искать работу в IT?

Reading time5 min
Views204K

Ты решил «Войти в Айти» или уже работаешь в IT и хочешь найти место получше. Где же найти работу и не потратить на это несколько месяцев?

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

Читать далее
Total votes 19: ↑12 and ↓7+5
Comments18

RICE на стероидах или новая модель скоринга «RIDE»

Level of difficultyMedium
Reading time11 min
Views1.8K

Если вы создавали свой стартап, занимались маркетингом ИТ продуктов или были частью продуктовой команды, то возможно знакомы с фреймворком планирования RICE для приоритизации продуктовых замыслов, идей и фич. Но сегодня речь не о нём. Будем обсуждать альтернативную версию этого фреймворка – «RIDE».

Подробнее
Total votes 4: ↑4 and ↓0+4
Comments4
Мы на Хабр Карьере проанализировали почти 10 000 зарплат айтишников за первое полугодие 2021 года, и делимся результатами исследования.

Медианная зарплата среди всех ИТ-специализаций сейчас 120 000 ₽. В Москве зарабатывают 160 000 ₽, в Петербурге — 135 000 ₽, в остальных регионах — 100 000 ₽. По сравнению со вторым полугодием 2020 года, зарплаты выросли на 6,2% за счет роста зарплат в регионах
Хочу узнать подробности!
Total votes 25: ↑23 and ↓2+21
Comments36

Анатомия каналов в Go

Reading time34 min
Views157K

Привет, Хабр! Представляю вашему вниманию перевод статьи "Anatomy of Channels in Go" автора Uday Hiwarale.


Что такое каналы?


Канал — это объект связи, с помощью которого горутины обмениваются данными. Технически это конвейер (или труба), откуда можно считывать или помещать данные. То есть одна горутина может отправить данные в канал, а другая — считать помещенные в этот канал данные.


Создание канала


Go для создания канала предоставляет ключевое слово chan. Канал может передавать данные только одного типа, данные других типов через это канал передавать невозможно.

Читать дальше →
Total votes 22: ↑22 and ↓0+22
Comments7

Особенности национальной интеграции с платёжными системами

Reading time7 min
Views7.1K
Электронная коммерция стала трендом 2020 года. Крупные игроки рынка начали активно развивать сервисы доставки продуктов и готовых блюд. Как грибы после дождя выросли новые маркетплейсы. Даже те, кто был далёк от интернета и технологий, вынужденно погрузились в тему дистанционной торговли. Почему — все знают, но сегодня поговорим не об этом. Перейдём сразу к ключевому звену коммерции — приёму платежей. В статье поделюсь несколькими рекомендациями о том, как с ним работать.

image
Читать дальше →
Total votes 21: ↑21 and ↓0+21
Comments7

Открываем порты за NAT при помощи NAT-PMP и UPnP IGD

Reading time4 min
Views152K


Ранее я много раз слышал, что UPnP каким-то образом умеет самостоятельно открывать порты (производить Port Forwarding на роутере) по запросу от хоста из локальной сети. Однако, то, каким именно образом это происходит, и какие протоколы для этого используются, доселе было покрыто для меня пеленой тумана.

В данной статье я хочу кратко рассказать, как работают два механизма для проброса портов, а именно NAT Port Mapping Protocol и Internet Gateway Device (IGD) Protocol, входящий в набор протоколов UPnP. К своему удивлению я обнаружил, что в рунете информация по данному вопросу более чем скудна, что и сподвигло меня на написание данной заметки.

Для начала приведу краткий FAQ:

Q: Для чего нужны данные протоколы?
A: Для формирования на маршрутизаторе правила проброса определенного TCP/UDP порта (Port Forwarding) не вручную, а «автоматически», т.е. по запросу от хоста во внутренней сети.

Q: Как это реализуется?
A: Устройство за NAT отправляет маршрутизатору запрос с указанием внутреннего и внешнего номеров портов и типа протокола (TCP/UDP). Если указанный внешний порт свободен, маршрутизатор формирует у себя правило трансляции и рапортует запросившему компьютеру об успешном выполнении запроса.

Q: Проводится ли на маршрутизаторе аутентификация/авторизация запросов на открытие порта?
A: Нет, не проводится.

Теперь же рассмотрим работу данных протоколов более подробно (под катом).
Читать дальше →
Total votes 9: ↑9 and ↓0+9
Comments14

Amazon SQS vs RabbitMQ

Reading time8 min
Views23K

Введение


Любой прогресс и оптимизация приветствуется кем угодно. Сегодня хотелось бы поговорить про прекрасную вещь, значительно облегчающую жизнь – очереди. Внедрение best practices в этом вопросе не только улучшают производительность приложения, но и успешно готовят ваше приложение к архитектуре «в стиле» Cloud Computing. Тем более, что не использовать уже готовые решения от провайдеров облачных технологий просто глупо.

В этой статье мы рассмотрим Amazon Web Services с точки зрения проектирования архитектуры средних и больших веб приложений.

Рассмотрим схему такого приложения:



Читать дальше →
Total votes 25: ↑22 and ↓3+19
Comments17

RocksDB сервер – быстрое key-value хранилище для SSD накопителей

Reading time5 min
Views36K
RocksDB RocksDB – постоянное хранилище «ключ-значение» для быстрых накопителей. Основное ее предназначение — хранение данных на flash дисках.

Узким местом в производительности часто является обращение к БД.
Эта проблема может решаться по разному.
Использование кэша решает проблему производительности, но существенно усложняет архитектуру программы. Графовые базы данных выходят из ситуации за счет оптимальных для данной задачи алгоритмов. Другим типом решений являются хранилища, достигающие высокой производительности за счет использования быстрого носителя.
В последнее время появилось много NoSQL хранилищ полностью хранящих данные в памяти. Но память все еще стоит дорого и ее объем ограничен. Увеличение памяти за счет шардинга опять таки упирается в стоимость.
Логичным выходом из ситуации было бы использование SSD дисков. Они имеют относительно невысокую стоимость и при этом вполне небольшое время отклика.

Читать дальше →
Total votes 41: ↑40 and ↓1+39
Comments39

Знакомство с СУБД CockroachDB и создание отказоустойчивого кластера с ней на Ubuntu 16.04

Reading time8 min
Views37K
Предисловие от переводчика: CockroachDB — достаточно молодая реляционная СУБД с открытым кодом (лицензия Apache 2.0), изначально созданная быть распределённой (с горизонтальным масштабированием «из коробки») и отказоустойчивой. Её авторы из компании Cockroach Labs, созданной в 2015 году, задаются целью «совместить богатство функциональности SQL с горизонтальной доступностью, привычной для NoSQL-решений». Данное руководство написано одним из сотрудников компании-разработчика и опубликовано на сайте облачного провайдера DigitalOcean для того, чтобы познакомить ИТ-специалистов с этой СУБД и продемонстрировать её использование.


Введение


CockroachDB — распределённая СУБД (SQL) с открытым кодом, обеспечивающая согласованность данных, масштабируемость и выживаемость.

Настройка CockroachDB проста: устанавливаете её на нескольких серверах (узлах) и объединяете их в единое целое для совместной работы (кластер). Все узлы кластера действуют «симметрично» и предлагают доступ к одинаковым данным. Если хранилище для данных необходимо увеличить, то при используемой архитектуре достаточно создать новые узлы и присоединить к кластеру.
Читать дальше →
Total votes 25: ↑25 and ↓0+25
Comments16

Python: строим распределенную систему c PySyncObj

Reading time5 min
Views16K
Представьте, что у вас есть класс:
class MyCounter(object):
    def __init__(self):
        self.__counter = 0
    def incCounter(self):
        self.__counter += 1
    def getCounter(self):
        return self.__counter

И вы хотите сделать его распределённым. Просто наследуете его от SyncObj (передав ему список серверов, с которыми нужно синхронизироваться) и отмечаете декоратором @replicated все методы, которые изменяют внутреннее состояние класса:
class MyCounter(SyncObj):
    def __init__(self):
        super(MyCounter, self).__init__('serverA:4321', ['serverB:4321', 'serverC:4321'])
        self.__counter = 0
    @replicated
    def incCounter(self):
        self.__counter += 1
    def getCounter(self):
        return self.__counter

PySyncObj автоматически обеспечит репликацию вашего класса между серверами, отказоустойчивость (всё будет работать до тех пор, пока живо больше половины серверов), а также (при необходимости) асинхронный дамп содержимого на диск.
На базе PySyncObj можно строить различные распределенные системы, например распределенный мьютекс, децентрализованные базы данных, биллинговые системы и другие подобные штуки. Все те, где на первом месте стоит надёжность и отказоустойчивость.
Читать дальше →
Total votes 28: ↑28 and ↓0+28
Comments24

Основы декларативного программирования на Lua

Reading time12 min
Views48K
Луа (Lua) — мощный, быстрый, лёгкий, расширяемый и встраиваемый скриптовый язык программирования. Луа удобно использовать для написания бизнес-логики приложений.

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

Луа — мультипарадигменный язык программирования. Одна из сильных сторон Луа — хорошая поддержка декларативного стиля. В этой статье я кратко опишу базовые декларативные средства, предоставлямые языком Луа.
Читать дальше →
Total votes 69: ↑64 and ↓5+59
Comments18

300 потрясающих бесплатных сервисов

Reading time11 min
Views1.6M


Автор оригинальной статьи Ali Mese добавил ещё 100 новых бесплатных сервисов. Все 400 потрясающих сервисов доступны здесь. И еще подборку +500 инструментов от 10 марта 2017 г. смотрите здесь.



A. Бесплатные Веб-Сайты + Логотипы + Хостинг + Выставление Счета

  • HTML5 UP: Адаптивные шаблоны HTML5 и CSS3.
  • Bootswatch: Бесплатные темы для Bootstrap.
  • Templated: Коллекция 845 бесплатных шаблонов CSS и HTML5.
  • Wordpress.org | Wordpress.com: Бесплатное создание веб-сайта.
  • Strikingly.com Domain: Конструктор веб-сайтов.
  • Logaster: Онлайн генератор логотипов и элементов фирменного стиля (new).
  • Withoomph: Мгновенное создание логотипов (англ.).
  • Hipster Logo Generator: Генератор хипстерских логотипов.
  • Squarespace Free Logo: Можно скачать бесплатную версию в маленьком разрешении.
  • Invoice to me: Бесплатный генератор счета.
  • Free Invoice Generator: Альтернативный бесплатный генератор счета.
  • Slimvoice: Невероятно простой счет.

Читать дальше →
Total votes 341: ↑325 and ↓16+309
Comments107

Три ключевых принципа ПО, которые вы должны понимать

Reading time13 min
Views224K

Разрабатывая приложения, мы постоянно сталкиваемся с новыми подходами, языками и концептами. И постоянно мы мечемся в сомнениях «смогу ли я быть на волне, оставаться конкурентоспособным, учитывая все изменения и тренды?». Давайте задумаемся на мгновение, вспомнив фразу из моего любимого фильма «Касабланка» — в любви законов новых нет — так создан свет.

Все, что касается любви, применимо и к коду. Новых законов в коде нет. Если вы четко понимаете основные идеи разработки, вы способны максимально быстро адаптироваться к новым подходам. В этой статье я расскажу вам о трех основных принципах, которые, наряду с другими, позволяют регулировать сложность разработки. Я поделюсь своим видением вопроса, которое, надеюсь, поможет вам в повседневной работе.
Читать дальше →
Total votes 142: ↑128 and ↓14+114
Comments56

Неприступный почтовый сервер, или жизнь без спама

Reading time11 min
Views197K
Борьба со спамом — это головная боль всех ответственных администраторов почты. Чего только они не изобретают, чтобы любимым пользователям лучше жилось. Однако, как показала практика общения со многими системными администраторами, почему-то далеко не все представляют как правильно фильтровать спам.

Чаще всего встречается подход «добавим кучу RBL (DNSBL) и будем радоваться жизни». Подход не верный чуть более, чем полностью. Второй по популярности — контент-фильтры, зачастую купленные за бешеные деньги. Такой подход тоже в большинстве случаев совершенно неоправдан.

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

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

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

Читать дальше →
Total votes 158: ↑140 and ↓18+122
Comments149

Пути более эффективного использования PostgreSQL

Reading time5 min
Views59K
Прочитав статью Базы данных в онлайн играх и особенно комменты к ней, я в очередной расстроился от мысли, что многие разработчики меняют БД в своём проекте, пытаясь этой сменой решить свои проблемы, не исчерпав, однако, всех возможностей, предоставляемой заменяемой БД. Я принимаю участие в работе над проектом, БД которого характеризуется:
  • Количеством транзакций порядка 5'000 — 10'000 в секунду
  • Объемом примерно в 100ГБ (который бодро растёт)
  • Примерно равным количеством операций на чтение/запись
  • Преимущественно мелкими транзакциями

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

Я опишу некоторые проблемы, с которыми мы сталкиваемся, и применённые решения. Если кто-то сочтёт это полезным — ради Бога. Если кто-то поправит — я буду только рад обнаружить уязвимость в используемых подходах и увеличить эффективность работы БД. Описанное может быть применено без вмешательства в логику приложения, исключительно путём модификации схемы БД.
Читать дальше →
Total votes 44: ↑40 and ↓4+36
Comments55

Celestia

Reading time5 min
Views40K


В свете обострившегося интереса к космонавтике и астрономии на Хабре (спасибо NASA и Curiosity), хотелось бы рассказать о замечательном свободном планетарии, созданным Крисом Лорелом — Celestia (а точнее, о расширенной сборке Celestia Extended Pack).
Кстати, именно с помощью Celestia была создана заставка к всенародно любимому сериалу Теория большого взрыва :)
Читать дальше →
Total votes 71: ↑67 and ↓4+63
Comments59

Представлен работающий прототип ховербайка

Reading time1 min
Views7.1K
Компания Aerofex представила публике уже работающий прототип ховербайка. К сожалению, в ближайших планах компании – доработка платформы для беспилотного использования, но можно надеяться, что в будущем найдется место и пилотируемым версиям. Сама разработка, по утверждению представителей компании, родом еще из 1960-х, но тогда у нее было несколько неразрешимых технических проблем. Теперь же прототип доработан и даже испытан. Пилотируемая версия сейчас испытывается на высотах до 4,5 метров и скорости до 50 км/ч, но это далеко не предел возможностей аппарата. В ближайшем будущем Aerofex планируют адаптировать платформу к беспилотному использованию и распространять получившийся аппарат в различных сферах от сельского хозяйства до армии.

Под катом пара видео и интересная ссылка
Total votes 86: ↑77 and ↓9+68
Comments113

Что внутри марсохода Curiosity

Reading time5 min
Views18K


6 августа 2012 года на поверхность Марса десантировался аппарат «Любопытство» (Curiosity). В следующие 23 месяца марсоход будет изучать поверхность планеты, её минералогический состав и спектр излучения, искать следы жизни, а также оценит возможность высадки человека.

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

При всем своем большом обвесе и внешней легкости аппарат имеет массу легкового автомобиля (900 кг) и весит на поверхности Марса 340 кг. Для запитывания всего оборудоваения используется энергия распада плутония-238 от радиоизотопного термоэлектрического генератора компании «Боинг», ресурс которого составляет как минимум 14 лет. На данный момент он вырабатывает 2,5 квт·ч тепловой энергии и 125 Вт электрической, со временем выход электричества будет снижаться до 100 Вт.
Читать дальше →
Total votes 101: ↑96 and ↓5+91
Comments174

Робот на солнечных батареях использует песок для 3D-печати

Reading time1 min
Views7.7K


Наверное, это самый экологичный робот — осуществляет 3D-печать из природных материалов (почва и песок), используя при этом природную энергию (Солнце).

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

Под катом — видео и FAQ.
Читать дальше →
Total votes 87: ↑85 and ↓2+83
Comments184

Голубая карта Германии

Reading time3 min
Views29K
image

Коллеги, сегодня, первого августа, в Германии вступил в силу проект "Blue Card", позволяющий инженерам и в частности, IT специалистам получить возможность работать в Германии и Евросоюзе, при этом получить четырёхлетнюю визу с правом работы по упрощённой процедуре. Проект этот обсуждался довольно давно, но вот теперь получил официальное подтверждение. Он в общих чертах напоминает программу Green Card десятилетней давности, но есть несколько важных отличий.

Читать дальше →
Total votes 100: ↑98 and ↓2+96
Comments169
1
23 ...

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity