Рубрики
Разработка

Golang – теоретические вопросы для собеседования

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

Строки

  • Что такое строка?
  • Как определить длину строки?
  • Кодировка, юникод
  • Преобразование строки в число

Массивы

  • Что такое массив?
  • Длина массива – len

Срезы

  • Что такое срезы?
  • Три компонента среза
  • Добавление в срез, функция append

Map

  • Что такое map?
  • Как получить элемент, адрес отображения?
  • Порядок итерации

Структуры

  • Что такое структуры?
  • Сравнение структур

Ошибки

  • Преимущества реализации ошибок
  • Реализация обнаружения ошибок
  • Panic и Recover

Интерфейсы

  • Зачем нужны интерфейсы, особенности в Golang
  • Зачем нужны пустые интерфейсы
  • Что такое декларация типов?

Go подпрограммы

  • Буфферизированные и небуфферизированные каналы
  • Закрытые каналы
  • Что такое горутина
  • Как завершить много горутин
  • Wait group
  • Когда используют контекст
  • Состояние гонки
  • Сколько весит горутина
Рубрики
Путешествия

ЮАР в октябре. Рассказ о поездке

Сегодня в 2 часа 17 минут утра впервые жизни пересёк экватор.
Республика Конго встретила грозой, что я не забуду никогда.

Молнии били с интервалом пять – десять секунд, разрывая тьму.

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

Что Нигер, что Камерун, что Конго (Нигерию я проспал и сказать не могу) это практически полная тьма ночью. Бывают одинокие огни, в Конго увидал первую подсвеченную улицу. Одну.

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

Первое впечатление от Кейптауна: город чрезвычайно контрастный.

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

Muizenberg Beach, Capetown, South Africa
Muizenberg Beach

И в этом же городе, есть районы, которые невозможно отличить от Америки. Молы, особняки, спортивные бегающие в новых эир-подсах. Как все это уживается вместе?

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

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

Порт Элизабет, пляж

Порт Элизабет, что лежит на 33 широте, продувается всеми арктическими ледяными ветрами. Начинаешь понимать ту отвагу, которую проявляли первые мореплаватели что шли здесь под парусами.

Оживленный, с хаотичным движением, грязный центр, сменяется пустынными районами, которые напоминают Сан-Франциско. Много домов сдается, много выставлены на продажу.

За 800 рублей с человека, можно съесть стейк с бэйби картошкой и выпить капучино.

3 февраля 1488 года португальский мореплаватель, страдая от штормовых ветров, достиг мыса доброй надежды, открыв путь на Индию.
Мы в городе Музенберг, что в 20 км от мыса. Ледяная вода и непрекращающиеся волны дают жизнь для пингвинов и местных серферов.

«Вот видишь белых?» – спрашивает меня таксист: «Они живут за заборами, каждый в своем мире, не общаясь друг с другом.
Мы Африканцы другие. У нас нет заборов, мой дом, дом моему соседу. Это называется убунту – человечность.» Белые живут иначе, но таксист лукавит.

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

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

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

Африка очень разная. В нашем доме раздельный сбор мусора. Мы были в кафе, где все официанты с синдромом дауна, представьте такое у нас. За 2 тысячи километров дорог я ни разу не попал в яму. Центр Кейптаун: деловой район сродни Манхеттену.

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

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

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

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

Рубрики
Диалоги Путешествия

Алматинский таксист

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


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


По приезду цена выросла в 16 раз, я, конечно, отказался платить. Разразился скандал, подошли прохожие, которые в целом согласились, что цена завышена. В итоге договорились на 4 тысячи тенге, что в 4 раза больше изначальной. Так началась моя жизнь в Алмате.
Описать среднего жителя Алматы, так же сложно как описать нью-йоркера: здесь Бог весть сколько национальностей и кажется невозможно найти похожих друг на друга людей. Уверен, когда-нибудь из этой яркой смеси выйдет что-нибудь очень толковое.


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

Рубрики
Разработка

Как быстро ограничить количество выводимых постов в WordPress?

Чтобы ограничить количество выводимых постов в WordPress в пределах одного цикла нужно сделать следующее:

 $the_query = new WP_Query( array(
'posts_per_page' => 2
));

Все, больше ничего другого делать не надо.

Другие статьи о разработке: тут.

Рубрики
Разработка

Как я взламывал машинку на радиоуправлении

Сделать этот проект меня вдохновил Андрю, который делал похожий проект.

Я последовал его примеру и купил в магазине машинку за 400 рублей. Было любопытно, смогу ли я подключить пульт к Arduino. Результаты удивили даже меня.

Было жалко ломать пульт

Перед тем как разобрать, я решил протестировать, работает ли машинка. Она ездила отлично и даже первое время стало обидно ее ломать, вдруг не заработает?

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

Я перерезал красный провод

Кнопка вперед (FOR), назад (BACK), лево (LEFT) и право (RIGHT).

Сама плата питалась двумя батарейками по 1.5V, то есть в сумме 3V. Столько же сколько выдает Adruino Uno. Я перерезал провода и подключил их к Arduino через breadbord.

Машинка ездила!

Впервые узнал как выглядит припой

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

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

Достаем знания программирования

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

Есть два языка на котором можно писать: адаптированный C++ и NodeJS. Так как у меня в планах было управлять машинкой через телефон, я выбрал NodeJS в привязке с socket io.

Сам код доступен по ссылке на GitHub.

Рубрики
Разработка

Модальное окно на JS быстро

Модальное окно – маленькое окошко, которое всплывает, чтобы сказать о чем то важном. Сложно ли сделать модальное окно без Bootstrap? Попробуем разобраться.

Куда вставить в DOM?

Обычно, я помещаю его перед закрывающим тэгом body.

[html]
<div class="modal" id="modal"></div>
</body>
</html>
[/html]

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

Центрирование

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

[css]

.modal {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}

[/css]

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

Position – fixed?

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

Разберемся с шириной

На больших экранах, типичное открытое модальное окно не только отцентровано, но и ограниченно по ширине.

[css]

.modal {
width: 600px;
}

[/css]

Однако, есть такие экраны, которые меньше 600px в ширину. Чтобы исправить ситуацию добавим максимальную ширину.

[css]

.modal {
width: 600px;
max-width: 100%;
}

[/css]

Высота

Задавать высотку еще более ответственное занятие. Мы знаем, что контент имеет свойство меняться. Плюс, техника центрирования через transform радостно обрезает края, без появления скролл-бара. Установка максимальной высоты обезопасит нас второй раз.

[css]

.modal {
height: 400px;
max-height: 100%;
}

[/css]

Overflow

После того как мы разобрались с высотой, пришло время заняться свойством overflow. Распространенно использовать overflow значение, прямо в .modal, однако, есть две проблемы с этим:

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

Я бы предложил использовать внутренний контейнер:

[html]

<div class="modal" id="modal">
<!– не скролиться –>
<div class="modal-guts">
<!— скролиться –>
</div>
</div>
[/html]

Учитывая, что у нас будет контент который нужно скролить, нам нужно задать высоту. Есть несколько вариантов. Вот один из них:

 

[css]

.modal-guts {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
/* отступы */
padding: 20px 50px 20px 20px;
/* разрешим скролить */
overflow: auto;
}

[/css]

Кнопки

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

[html]

<div class="modal" id="modal">
<!– не скролиться –>
<button class="class-button" id="close-button">Закрыть</button>
<div class="modal-guts">
<!— скролиться –>
</div>
</div>

[/html]

Разберемся с затемнением

Обычное модальное окно делают с полностью затемняющимся фоном. Это полезно по нескольким причинам:

  • оно может затемнить остальной экран
  • может предотвратить клики/взаимодействие с контентом вокруг модального окна
  • может использоваться, как гигантская кнопка закрытия

Типичный пример использования:

[html]

<div class="modal" id="modal">
<!– Модалка –>
</div>

<div class="modal-overlay" id="modal-overlay"></div>

[/html]

[css]

.modal {
/* все что мы уже выше описали */
z-index: 1010;
}

.modal-overlay {
z-index: 1000;
position: fixed;
top:0;
left:0;
width: 100%;
height: 100%;
}

[/css]

Закрывать классом, а не открывать классом

Я заметил распространенное явление, когда по умолчанию .modal класс скрыт, как например display: none; Потом, чтобы открыть, добавляют класс .modal.open {display: block;}

Однако, это может быть и плохо, потому что ваша модальное окно может быть display: flex; и display: block; его перепишет.

[css]

.modal {
.display: flex;
}

.modal.closed {
display: none;
}

[/css]

Добавим JavaScript

[js]

var modal = document.querySelector("#modal"),
modalOverlay = document.querySelector("#modal-overlay"),
closeButton = document.querySelector("#close-button"),
openButton = document.querySelector("#open-button");

closeButton.addEventListner("click", function(){
modal.classList.toggle("closed");
modalOverlay.classList.toggle("closed");
});

openButton.addEventListner("click", function(){
modal.classList.toggle("closed");
modalOverlay.classList.toggle("closed");
});

[/js]

ДЕМО СКАЧАТЬ

Оригинал статьи на CSS Tricks (англ)

 

 

Рубрики
Разработка

О чем был PiterCSS?

В эту пятницу в Санкт-Петербурге состоялось мероприятие PiterCSS. Самые известные фронт-эндщики (и не только) собрались, чтоб послушать спикеров со всего мира. Выступали представители Венгрии, Канады и Китая. Впрочем было кое-что.

Но что там делать помимо слушанья?

Интересные стенды предоставляли фирмы партнеры. Отечественная фирма с мировым именем JetBrains дарила подарки всем, кто предложит нововведение для их софта. Супер крутой обучающий сервис HTML Academy предлагал сверстать макет на время, но без просмотра результата в браузере.

Образование для самых юных

Отдельное внимание, хотелось бы уделить очень интересной школе образование детей до 15 лет Digital Banana. Эти ребята предоставили стенд с играми, которые были написаны детьми 11 – 12 лет. В данный момент идет набор в летние группы, так что спешите.

Рубрики
Биология

Как сельское хозяйство сделало нас моногамными?

Открыл для себя, что человек стал моногамным сравнительно недавно. Было это примерно 10 тысяч лет назад, когда люди стали заниматься сельским хозяйством.

Мало но качественно

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

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

Но есть и исключения

Впрочем существует и противоположные этому примеры. Американская степная полевка, хоть и r-стратег, рожает много, и почти не воспитывает детей, моногамна. Гиббоны, придерживаются K – стратегии, моногамны, но те же гориллы, хоть и K – стратеги, но полигамны.

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

Остается только добавить, не обижайтесь на человека, если он часто меняет своих партнеров – быть может его воспитывали гориллы?