Search
Write a publication
Pull to refresh
0
@GenGoread⁠-⁠only

User

Send message

Узнаем текущую погоду и прогноз простеньким скриптом на Python'е

Reading time4 min
Views214K
На Хабре есть интересная статья о том, как энтузиасты делают погоду. Энтузиасты делают, а мы воспользуемся плодами их трудов — получим эту самую погоду от OpenWeatherMap.org скриптом на Python'е.

Для получения доступа к сервису погоды придется пройти несложную процедуру регистрации на сайте OpenWeatherMap.org. Сформируем и отправим запрос, разберем ответный пакет в формате JSON, и получим текущую температуру с описанием состояния погоды.


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

Книга «Веб-разработка. Исчерпывающее руководство»

Reading time7 min
Views31K
imageПо сути эта книга персональный тренер по созданию сайтов. Вы начнете с того, что узнаете, как создавать традиционные веб-страницы, используя стандарты, на которых основана каждая страница во Всемирной паутине (это HTML и CSS). Затем вы познакомитесь с сервисами от таких компаний, как Google, и они научат вас подсчитывать количество посетителей, помогут популяризировать сайт и даже получить немного денег. Вы вкратце познакомитесь с языком программирования JavaScript, который используется почти на каждой интерактивной странице во Всемирной паутине.
Говоря коротко, эта книга будет прекрасным руководством для людей, желающих самостоятельно создать с нуля сайт, который будет обладать всеми фишками, присущими современным сайтам. Это издание также станет отправной точкой для тех, кто хочет углубиться в область веб-дизайна. Если вы относитесь к какой-либо из вышеперечисленных категорий, добро пожаловать на борт!
Читать дальше →

Протокол QUIC: переход Web от TCP к UDP

Reading time9 min
Views97K
Протокол QUIC (название расшифровывается как Quick UDP Internet Connections) — совершенно новый способ передачи информации в интернете, построенный поверх протокола UDP, вместо общепринятого ранее использования TCP. Некоторые люди называют его (в шутку) TCP/2. Переход к UDP — наиболее интересная и мощная особенность протокола, из которой следуют некоторые другие особенности.

Сегодняшний Web построен на протоколе TCP, который был выбран за его надёжность и гарантированность доставки пакетов. Для открытия TCP-соединения используется так называемое «трёхкратное рукопожатие». Это означает дополнительные циклы отправки-приёма сообщений для каждого нового соединения, что увеличивает задержки.

image

Если вы захотите установить защищённое TLS-соединение, придётся переслать ещё больше пакетов.

image

Некоторые инновации, вроде TCP Fast Open, улучшат некоторые аспекты ситуации, но эта технология пока не очень широко распространена.

Протокол UDP, с другой стороны, построен на идее «отправить пакет и забыть о нём». Сообщение, отправленное по UDP, будет доставлено получателю (не гарантированно, с некоторой вероятностью успеха). Яркое преимущество здесь в меньшем времени установки соединения, такой же яркий недостаток — негарантированность доставки или порядка прихода пакетов получателю. Это означает, что для обеспечения надёжности придётся построить некоторый механизм поверх UDP, который гарантирует доставку пакетов.

И здесь на сцену выходит QUIC от Google.
Читать дальше →

Кто ты по професии: Разница между «Programmer», «Software Engineer» и «Computer Scientist»

Reading time6 min
Views176K
Как только сегодня ни называют программистов, особенно в зарубежных СМИ. Да и у нас, в частности, при поиске работы, можно встретить абсолютно разные описания должностных обязанностей.

Меняется ли от этого суть работы? Мы в 1cloud попробовали разобраться в том, какую работу подразумевают такие специализации как «Programmer», «Software Engineer» и «Computer Scientist».

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

Разгоняем производительность iOS-приложений

Reading time10 min
Views12K
image
Тормоз для броненосца USS Indiana BB-1, 1910 год. Эта штуковина должна тормозить корабль водоизмещением 10453 тонны.

Оригинал: iOS App Performance: Instruments & beyond
Автор: Igor M

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

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

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

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

Пятничный формат: «Нельзя просто так взять и объяснить непрограммисту…»

Reading time8 min
Views26K
Существуют концепты, которые очень сложно понять даже программистам в начале своего пути. И некоторые из них точно не удастся легко и быстро объяснить «простым смертным», если они не математики. Обычно такие понятия уже не так пугают людей после приведения примеров из «обычного» мира.

Мы в 1cloud попытались найти такие аналогии, так что теперь разговоры с неспециалистами могут стать чуточку интереснее, и вам с большей вероятностью удастся достичь взаимопонимания (на эту тему мы написали практическое пособие «Как вывести из себя программиста»).

Log in или Log on? Front-end или Frontend? Продолжаем разбираться

Reading time2 min
Views28K


В прошлый раз мы говорили о разнице между login и log in. В продолжение темы — ещё несколько нюансов, о которых вы просили рассказать в комментариях.

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

Прокси-сервер с помощью Tor. Основа для многопоточного парсинга

Reading time5 min
Views60K
Всем привет! На днях прилетела интересная задача: «Найти бесплатные прокси-сервера». Взявшись за нее, решил обойти все сайты свободных проксей и понял — дохлые… ну или с высоким пингом.

После нескольких часов безуспешных поисков, было принято решение использовать свои ресурсы!

Итак, что в итоге должно получиться:

1. VM Ubuntu/Debian 2 CPU, 2GB RAM, 8GB HDD (ну тоесть совсем не требовательная)
2. PRIVOXY для проксирования запросов (Можно взять nginx, varnish — я взял Privoxy)
3. TOR сервер
Читать дальше →

«Послание в никуда»: Как не отправить письмо несуществующему адресату

Reading time4 min
Views13K
Отправляя рассылки на несуществующие и одноразовые адреса, вы рискуете попасть под «санкции» почтовых сервисов. Так, наличие в рассылках невалидных адресов может привести к попаданию писем, отправленных с вашего домена, в папку «Спам» или даже к полной их блокировке.

А разослав письма на некорректные электронные адреса, вы вызовете негатив у аудитории, которая даже не слышала о вас. В результате пострадает не только ваша репутация, но и эффективность ваших email-кампаний.


Фото bnilsen CC / Flickr
Читать дальше →

Различия между MVVM и остальными MV*-паттернами

Reading time11 min
Views166K


От переводчика:
Уже опубликовано много материалов по MVC и его производным паттернам, но каждый понимает их по-своему. На этой почве возникают разногласия и холивары. Даже опытные разработчики спорят о том, в чем отличие между MVP, MVVM и Presentation Model и что должен делать тот или иной компонент в каждом паттерне. Ситуация усугубляется еще и тем, что многие не знают истинную роль контроллера в классическом варианте MVC. Предлагаю вашему вниманию перевод хорошей обзорной статьи, которая многое проясняет и расставляет всё по своим местам.
Разобраться в MV-паттернах

Javascript-паноптикум

Reading time7 min
Views21K

За время, что мне довелось писать на Javascript, у меня сложился образ, что js и его спецификация это шкатулка с потайным дном. Иногда кажется, что ничего секретного в ней нет, как вдруг магия стучит в ваш дом: шкатулка раскрывается, оттуда выскакивают черти, по-домашнему исполняют блюз и резво скрываются обратно в шкатулке. Позднее вы узнаете причину: стол повело и шкатулку наклонило на 5 градусов, что вызвало чертей. С тех пор вы не знаете, это фича шкатулки, или лучше все-таки покрепче замотать её изолентой. И так до следующего раза, пока шкатулка не подарит новую историю.


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

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

Проектирование большого проекта на примере аналога Alibaba.com

Reading time9 min
Views23K
Многие рассказываю о проектировании: как пользоваться Axure или Sketch, какие функции должен содержать сайт, как правильно спроектировать страницу товара. Это все, безусловно, очень полезно, но не показывает полную картину происходящего в проектировании. В интернете даже нет ни одного полного примера технического задания на проекты такого уровня. На самом деле, чтобы спроектировать большой сайт, нужно потратить сотни часов на исследования, прототипирование и разработку подробного ТЗ. В этой статье я впервые в рунете покажу все этапы проектирования и результаты по ним, полный динамический прототип (более 150 прототипов) и большое ТЗ (более 200 страниц описания). Все это мы будем делать на примере проектирования аналога крупнейшей в мире E-commerce площадки «Alibaba.com».
Читать дальше →

React'ивные Panel'и

Reading time6 min
Views12K

Что такое панель? Это довольно простой компонент, разбивающий видимую область на 2-3 блока:


  • Шапка. В шапку обычно выводится заголовок и какие-то (обычно навигационные) элементы правления.
  • Тело. В тело панели выводится выводится произвольное содержимое. Часто этот блок делается скроллируемым, чтобы шапка не уходила из поля зрения.
  • Подвал. Опциональный блок. Сюда выводят обычно общую для содержимого панели информацию и элементы управления.

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


В шапке может быть, а может не быть:


  • Заголовок. Дополнительно у него может быть подзаголовок.
  • Хлебные крошки. Они могут быть частью заголовка, а могут — подзаголовка.
  • Навигационные ссылки. Такие как "назад", "следующий" и тп.
  • Кнопки. Такие как "открыть фильтры", "переключить флаг", "закрыть окно" и другие.

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


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


Далее идёт обзор тех готовых решений, которые можно найти в гугле. Для каждого указан размер реализации в строках кода (CLOS). Плюс бонус в конце, для тех, кто доберётся ;-)

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

Почему важно делать эскизы, прежде чем переходить к прототипу

Reading time5 min
Views56K
Вольный перевод статьи о том, почему важно делать эскизы-зарисовки, прежде чем приступать к проектированию интерфейсов. Мне, как менеджеру проектов и, частично, проектировщику интерфейсов — статья показалась очень полезной. Крайне рекомендуется к прочтению всем участникам проектных команд.



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

Глубокое обучение для новичков: распознаем рукописные цифры

Reading time11 min
Views108K

Представляем первую статью в серии, задуманной, чтобы помочь быстро разобраться в технологии глубокого обучения; мы будем двигаться от базовых принципов к нетривиальным особенностям с целью получить достойную производительность на двух наборах данных: MNIST (классификация рукописных цифр) и CIFAR-10 (классификация небольших изображений по десяти классам: самолет, автомобиль, птица, кошка, олень, собака, лягушка, лошадь, корабль и грузовик).



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

Инвестирование в ИИ сулит больше выгод, чем рисков

Reading time4 min
Views7.7K
image
Автор: КР Санджив — технический директор в Wipro

Сложно предсказать каким образом будет развиваться технология искусственного интеллекта в ближайшие 10-20 лет, но потенциал для прибылей огромный. К 2018 году роботы будут управлять работой более 3-х млн человек; к 2020 г, умные машины станут главным объектом инвестирования для более чем трети руководителей корпораций по инвестиционной политике.
Читать дальше →

React Redux. Получение доступа к state из функции mapDispatchToProps()

Reading time2 min
Views65K

Всем привет! Сегодня рассмотрим решение, довольно-таки популярной проблемы — получение доступа к state из функции mapDispatchToProps() react-redux приложения.


Имеется типовой компонент-контейнер (про идеологию компонентов react-redux можно почитать здесь), который генерирую с помощью функции connect(). Код представлен ниже (публикую кусок кода, относящийся к данной теме):


const mapStateToProps = (state) => {
    return state.play;
};

const mapDispatchToProps = (dispatch) => {
    return {
        togglePlay: () => {
            dispatch(togglePlay());
        }
    }
};

const ButtonPlayComponentContainer = connect(
    mapStateToProps,
    mapDispatchToProps
)(ButtonPlayComponentView);

Тут все просто, определяем функции mapStateToProps() для чтения состояния и mapDispatchToProps() для передачи события. Далее генерируем компонент путем передачи созданных функций в connect().

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

Вводим текст красиво

Reading time8 min
Views55K
Сырые, но важные данные вроде номеров телефонов или кредиток — это именно то, что пользователи чаще всего вводят в наших приложениях. И с этим есть огромная проблема. Перепроверять 16 цифр своего Мастеркарда или 11 цифр номера телефона — это сущий ад для любого юзера. Решать эту проблему, естественно, приходится разработчикам, от лица которых я и пишу этот пост.

Поскольку современный Андроид не предоставляет инструментов для автоматического форматирования произвольного текста, эту задачу каждый решает своими костылями силами. Сначала в наших проектах эта задача решалась по месту: возникла необходимость — напиши свой TextWatcher и форматируй как надо. Но мы быстро поняли, что так делать не стоит — количество локальных костылей и специфических багов росло экспоненциально. Кроме того, задача весьма общая, так что и решать её надо системно.

Для начала хотелось следующего:

  1. Указал маску вроде +7 (___) ___-__-__
  2. Повесил её на EditText
  3. ...
  4. PROFIT

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

Начав работать над этим направлением, мы осознали, что создание полноценного языка описания формата — это сродни написанию своего RegEx-движка, что, честно говоря, в наши планы не входило. В итоге мы пришли к варианту, когда такой язык при необходимости можно добавить в любой момент (даже в клиентском коде) или пользоваться простеньким DSL, доступным из коробки (что в нашей практике решило 90% задач).

Посмотрев на то, что получилось, мы решили, что это круто, и надо бы поделиться с сообществом. Так у нас и родилась библиотека для Android-разработки Decoro. И сейчас я покажу пару фокусов из её арсенала.
Читать дальше →

Подключение шлюзов Intel для интернета вещей к AWS и обмен данными с облаком при помощи Node-RED или Python

Reading time10 min
Views6K
Расскажем о том, как подключить шлюз Intel для интернета вещей к Amazon Web Services (AWS) и приступить к созданию приложений, рассчитанных на работу с этой платформой, с использованием Node-RED и Python. В итоге мы придём к решению, в котором шлюз будет передавать в облако данные, используя протокол MQTT.


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

Как проходят уроки информатики в разных странах мира: 5 основных выводов

Reading time4 min
Views36K
Часто думают, что программирование — есть что-то сложное и недетское. Однако это, в принципе, играючи опровергает большое количество коммерческих компаний — от Apple (Swift Playground) и до Tynker, ориентированных на ребят от 5 лет. Ну или возьмем тот же Code.org — здесь вы можете найти курсы для детей 4+.

Но это все — про дополнительное образование. А что же происходит в это время в школах? Обучением детей начальной и средней школы программированию мы в нашей компании занимаемся уже почти 2 года и за это время прошли множество трансформаций и перечитали большое количество талмудов. И теперь хотим поделиться основными сделанными выводами…

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

Information

Rating
Does not participate
Registered
Activity