Pull to refresh
49
0
Тюльбашев Владислав @vtyulb

Пользователь

Send message

Реальная стоимость жизни в Кремниевой Долине для разработчика

Reading time5 min
Views153K

Зачем это читать?


Всем привет! Меня зовут Винсент, и я с 2018 года живу в Кремниевой Долине со своей супругой и сыном.


Своим фильмом, Дудь хотел поднять стартапный ажиотаж в России, но в итоге возбудил всех моих товарищей гораздо больше здесь, в Silicon Valley.


Этот пост — расчет стоимости жизни "обычного разработчика" (не "стартапера"), который работает "на дядю". Все максимально честно и подробно.

Читать дальше →
Total votes 278: ↑269 and ↓9+260
Comments902

Классный тимлид ответит за сервис

Reading time7 min
Views16K
Кто такой тимлид в Яндексе? Чем хороший отличается от плохого и стоит ли приглашать на эту должность человека со стороны — в нашем интервью с Алексеем Шаграевым (ashagraev), занимающим одну из руководящих должностей в поисковых службах Яндекса.


Читать дальше →
Total votes 47: ↑46 and ↓1+45
Comments5

GitHub превращается… превращается GitHub… в элегантный Windows 95

Reading time7 min
Views80K


В Твиттере какое-то время назад запостили шутку в честь приобретения Майкрософтом ГитХаба — страницу сайта, перестилизованную в стиле Windows 98. Я решил, что шутка слишком хороша, чтобы оставаться шуткой.

Давайте перекрасим GitHub!
Total votes 206: ↑202 and ↓4+198
Comments82

Особенности вызова функций в С++

Reading time33 min
Views60K

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


  • Регистры и их назначение при вызове функций.
  • Передача и возврат простых типов и структур.
  • Как передача по ссылке и по значению влияют на оптимизации тела функции компилятором.
  • Как используется место при многочисленных вызовах функций.
  • Механизм виртуальных вызовов.
  • Оптимизация хвостовых вызовов и рекурсии.
  • Инициализация структур, массивов и векторов.

Осторожно! Статья содержит большое количество кода на C++ и ассемблере (Intel ASM с комментариями), а также множество таблиц с оценками производительности. Всё написанное актуально для x86-64 System V ABI, который используется во всех современных Unix операционных системах, к примеру, в Linux и macOS.

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

Про C++ алиасинг, ловкие оптимизации и подлые баги

Reading time6 min
Views42K
С удивлением обнаружил, что про явление алиасинга (aliasing) здесь постов нет. Ситуацию нужно исправить, тк. алиасинг в любой сколько-то сложной C++ программе обязательно хоть где-нибудь, да есть. Это может быть хорошо, давая возможность ловких оптимизаций, а может быть плохо, внося повышенной паршивости баги. Под катом вкратце про оба случая (ну и неизменное «компилятор бьет спина», конечно; для разнообразия сегодня это gcc).
Читать дальше →
Total votes 90: ↑89 and ↓1+88
Comments49

Лучезарный китайский станок и окрасочная машина им. Франкенштейна

Reading time8 min
Views36K
Вы реквестировали пост с деталями про бурные эротические приключения с китайской линией оклейки коробок. Вот он.

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



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

За время восстановления (пока подадут питание, чтобы был свет, пока снимем реле, пока его почистим) клей в машине успевает застыть. А там в станке десятки тонких трубочек, которые забиваются намертво.
Читать дальше →
Total votes 93: ↑92 and ↓1+91
Comments63

Что придет на замену X Window System?

Reading time9 min
Views66K

Одним из знаменательных Linux событий прошлого года стал выход 25-й Федоры с графическим окружением Gnome 3.22 на базе дисплейного сервера Wayland, который призван заменить X Window System. Но зачем вообще после стольких лет возникла такая необходимость?




В последнее время экипаж МКС пересел с Windows на Linux.
— Хьюстон, у нас проблемы. Нас сносит на Юпитер.
— Вы что, опять возились с xorg.conf?
— Да. Хьюстон, за три последних дня у нас почему-то выросли бороды.

Далее, речь о том, почему Linux необходима новая графическая среда, хотя бы в 2017 г, а отдельным постом я расскажу про Wayland и Mir.

Читать дальше →
Total votes 95: ↑92 and ↓3+89
Comments215

Загадка штормгласса — домашней метеостанции на элементной базе начала XIX века

Reading time6 min
Views80K
Статьи про изготовление и использование домашних метеостанций публикуют на Гиктаймс регулярно. Я решил не отставать от тренда и тоже написать рассказ о метеостанции, которая висит у меня за окном — о штормглассе.

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


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

Объяснение принципа работы оказалось невероятно простым, а сам прибор — достаточно чувствительным, чтобы я мог, глянув на него, понять, как нужно одеваться, выходя из дома.
Если вам интересны подробности, прошу под кат.
Total votes 121: ↑121 and ↓0+121
Comments44

Роскомнадзор и передовые технологии отставания

Reading time6 min
Views23K
В книге «Ружья, микробы и сталь» автор Джаред Даймонд довольно подробно рассуждает о ключевых технологиях, которые позволили одним народам серьезно превзойти другие в конкурентной цивилизационной гонке, что привело в случаях столкновений к полному вымиранию отставших. Например, в какой-то момент такой технологией стало открытие стали и организация производства стальных изделий. Это широкий пласт различных действий, помноженный на понимание, возможности, способности и, главное, зрелость среды для новой технологии.

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

image

Читать дальше →
Total votes 46: ↑36 and ↓10+26
Comments146

Открытка-лабиринт. Подарок, который невозможно открыть, не разгадав головоломку

Reading time4 min
Views61K
Однажды я принёс другу на день рождения подарок, завёрнутый в бумагу с узором лабиринта. Друг пошутил, что было бы здорово, если бы надо было по-настоящему найти путь, чтобы открыть подарок. Мы принялись обсуждать, как можно построить механический лабиринт, причём без использования какой-либо электроники.
Так родилась идея к следующему празднику создать открытку-головоломку. В этой статье я расскажу, как её изготовить и какие тонкости нужно учесть.


Лабиринт в процессе прохождения.
Читать дальше →
Total votes 151: ↑151 and ↓0+151
Comments51

Ущербно-ориентированное программирование

Reading time6 min
Views88K
Ущербно-ориентированное программирование — это набор подходов, поощряющий повторное использование кода и гарантирующий долгосрочное использование производимого программистами кода в боевых системах. Количество строк кода является повсеместно применяемым показателем значимости приложения, а количество строк, которые программист пишет за рабочий день — полезная метрика, применяемая при планировании проектов и распределении ресурсов. Ущербно-ориентированное программирование — это один из наиболее эффективных способов получить наиболее объемный исходник в кратчайшие сроки.

Ущербный — имеющий изъян, неполноценный. Вредный, недостаточный.

Наследование


Наследование — это способ получить возможности старого кода в новом коде. Программист наследуется от существующей функции или блока кода, копируя этот кусок к себе и внося правки. Унаследованный код, как правило, конкретизируется под новые нужды с помощью возможностей, которые не поддерживал старый код. В таком смысле, старый код остается нетронутым, но новый наследуется от него.
Читать дальше →
Total votes 203: ↑174 and ↓29+145
Comments115

Что нужно знать о трудовых правах каждому работнику

Reading time9 min
Views243K
После опубликования статьи «Борьба за свои права…» мне написало много айтишников, что, если честно, стало приятной неожиданностью. Но, помимо вдохновляющих слов поддержки и советов, хабраюзеры также делились своими похожими ситуациями, в которых нарушались их трудовые права. Ситуации самые разные: от неуплаты заработной платы до неоформления в штате фирмы. Но все они были схожи в одном: они случались и зачастую заканчивались плачевно из-за низкой юридической грамотности работников в вопросах трудовых прав. Вот лишь один пример такой ситуации:

Andrey: у меня была точно такая же ситуация с банкротством конторы, сейчас я уже вижу, где поступил неправильно. Нас так же кормили «завтраками», или, как мы их называли, «микроплатежами», когда срок переносится на неделю, потом ещё на неделю. В итоге сказали, что банкротят. Также предложили написать заявление на отпуск без содержания на 3 месяца. Это основное условие получения текущей зп. Только нам выплачивали не всю зп. Остаток должны были выплатить по договору с головной американской конторой. Какая у меня была ошибка:

1) я написал заявление на увольнение по собственному желанию
2) я написал заявление на отпуск без сохранения зп
3) поверил, что головная контора выплатит долг

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

image

Поэтому у нас родилась идея* на основе реальных историй трудовых конфликтов собрать советы и рекомендации, как вести себя, на что обращать внимание при ведении трудовой деятельности. Мы планируем сделать серию статей на тему трудовых прав. Первая статья посвящена вопросам устройства и увольнения с работы. В самом обзоре сказано много общеизвестных и очевидных вещей, но, как показывает практика, именно на таких «очевидных» вещах чаще всего и допускаются ошибки при решении трудовых вопросов. Мы надеемся, что эта статья поможет в будущем избежать возможных неприятностей на работе.
Читать дальше →
Total votes 98: ↑91 and ↓7+84
Comments112

LiveDC — Быстрый доступ к p2p файлам

Reading time2 min
Views15K
Сегодня существует большое количество DC-клиентов на самый разный вкус. Однако все они наделены существенным недостатком: нужно ждать, пока скачиваемый файл полностью загрузится. А если вы желаете посмотреть фильм или новый эпизод любимого сериала в высоком качестве, то даже при скорости интернета 100 Мбит/с ждать придется довольно долго. Но ведь хочется-то сейчас!


Разве это возможно?
Total votes 32: ↑30 and ↓2+28
Comments56

Эпическое письмо Билла Гейтса о юзабилити Windows

Reading time4 min
Views64K
Вас раздражает юзабилити Windows XP? Это вы ещё не слышали Билла Гейтса. В опубликованной внутренней переписке Microsoft есть одно фантастическое письмо Билла Гейтса, которое невозможно не процитировать. Оно датировано 15-м января 2003-го года, но некоторые вещи до сих пор не утратили свою актуальность. Вообще, письмо скорее похоже на злобный постинг в блоге какого-нибудь ненавистника Windows, а не на сообщение отца-основателя Microsoft.

From: Bill Gates
Sent: Wednesday, January 15, 2003 10:05 AM
To: Jim Allchin
Cc: Chris Jones (WINDOWS); Bharat Shah (NT); Joe Peterson; Will Poole; Brian Valentine; Anoop Gupta (RESEARCH)
Subject: Windows Usability Systematic degradation flame

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

Позвольте мне рассказать о своём собственном вчерашнем опыте. Я решил скачать Moviemaker и купить пакет Digital Plus… так что я пошёл на сайт Microsoft.com. Там есть раздел загрузки софта, и я направился туда.

С пяти раз мне вообще не удалось открыть страницу загрузки из-за тайм-аутов. С шестого раза, после восьмисекундной задержки, она всё-таки загрузилась. Сайт так тормозит, что им невозможно пользоваться.
Читать дальше →
Total votes 179: ↑167 and ↓12+155
Comments278

Парни, нам нужно поговорить

Reading time4 min
Views128K
От переводчика: на оригинальный пост меня навёл EugeneOZ, за что ему отдельное спасибо.
Если кто-то найдёт какой-то косяк — я буду рад репортам в ЛС.


Парни, нам нужно поговорить


Мои дорогие задроты, гики, хакеры, дизайнеры, создатели, сборщики и очумельцы — с нашей культурой происходит что-то очень и очень странное.

Мы ведём себя как настоящие козлы по отношению друг к другу.

Нет, скажете вы, это вовсе не так, верно? Гики помогают друг другу! Ну, хм, может, иногда мы и помогаем, но большую часть времени мы являемся частью самого жестокого, критично настроенного и безразличного сообщества из всех, что я знаю. Сколько сайтов за день мы поливаем дерьмом? Скольким клиентам мы желаем отправиться в ад? Сколько мы глумимся над кривым фотошопом?
Читать дальше →
Total votes 324: ↑277 and ↓47+230
Comments208

Жизнь разработчика (в картинках)

Reading time1 min
Views65K
Взято отсюда специально для хабра. Возможно, в некоторых из ситуаций вы узнаете себя.

Когда я показываю босу, что окончательно пофиксил баг



Когда проджект-менеджер входит в офис



Читать дальше →
Total votes 884: ↑700 and ↓184+516
Comments132

Контроль через вину

Reading time4 min
Views90K


Много лет назад я был назначен ответственным за пожарную безопасность в одном офисе IT-компании. Выглядело это так: «Распишись здесь и здесь, всё, твою фамилию на щитке повесим, больше ничего не надо». Проблема была в том, что я нашёл, что же действительно означает такая роспись. И начал «строить» всех в офисе по соблюдению правил безопасности. Если вы не пробовали, сообщаю — зачастую очень сложно делать в обычных условиях. В чём проблема? В том, что большая часть людей считает эту норму условностью. Все нарушают, и мы будем.

Теперь представьте, что вы вводите правило, которому невозможно следовать. Или которому не будут следовать, потому что привыкли делать иначе. И не обеспечиваете жёсткий контроль за каждым случаем. Ну, вроде как форума, где материться по правилам нельзя, но модератору плевать. За примерами чуть покрупнее далеко ходить не надо, но не будем сегодня об этом. Представили?

Знаете, что мы в результате только что сделали внутри компании или отдела? Мы создали ситуацию, в которой виноват каждый человек отдельно, но никто в целом. И это очень важный и жестокий инструмент контроля.
Читать дальше →
Total votes 148: ↑125 and ↓23+102
Comments102

Неопределённое поведение и теорема Ферма

Reading time4 min
Views53K
В соответствии со стандартами C и C++, если выполнение программы приводит к переполнению знаковой целой переменной, или к любому из сотен других «неопределённых действий» (undefined behaviour, UB), то результат выполнения программы может быть любым: она может запостить на Твиттер непристойности, может отформатировать вам диск…
Увы, в действительности «пасхальные яйца», которые бы заставляли программу в случае UB делать что-то из ряда вон выходящее, не встречались со времён GCC 1.17 — та запускала nethack, когда встречала в коде программы неизвестные #pragma. Обычно же результат UB намного скучнее: компилятор просто оптимизирует код для тех случаев, когда UB не происходит, не придавая ни малейшего значения тому, что этот код будет делать в случае UB — ведь стандарт разрешает сделать в этом случае что угодно!
В качестве иллюстрации того, как изобилие UB в стандарте позволяет компилятору выполнять неочевидные оптимизации, Реймонд Чен приводит такой пример кода:

int table[4];
bool exists_in_table(int v)
{
    for (int i = 0; i <= 4; i++) {
        if (table[i] == v) return true;
    }
    return false;
}

В условии цикла мы ошиблись на единицу, поставив <= вместо <. В итоге exists_in_table() либо должна вернуть true на одной из первых четырёх итераций, либо она прочтёт table[4], что является UB, и в этом случае exists_in_table() может сделать всё что угодно — в том числе, вернуть true! В полном соответствии со стандартом, компилятор может соптимизировать код exists_in_table() до
int table[4];
bool exists_in_table(int v)
{
    return true;
}

Такие оптимизации иногда застают программистов врасплох.
Читать дальше →
Total votes 107: ↑104 and ↓3+101
Comments129

Защита подъезда методом организации разумного видеонаблюдения без консьержа

Reading time13 min
Views258K
Так получилось, что какой бы ни был аккуратный микрорайон, он всегда с чем-нибудь соседствует, плюс всегда есть праздношатающиеся, непраздношатающиеся и «этождети». Это если забыть про наркоманов, целенаправленных воров и разбойников. Твой дом — твоя крепость. Подъезд твоего дома — тоже твой дом. (Да, этот пункт многие не понимают, но учиться никогда не поздно). Классические методы защиты подъезда — установка укреплённых дверей; установка домофона; инсталляция консьержки; организация видеонаблюдения над входами.

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

Однако, если включить мозги и подумать, на самом деле можно весьма небольшими вложениями получить очень эффективный результат.
Читать дальше →
Total votes 298: ↑294 and ↓4+290
Comments314
1

Information

Rating
Does not participate
Location
Пущино, Москва и Московская обл., Россия
Date of birth
Registered
Activity