Pull to refresh
28
Уманский Леонид@splatt

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

15
Subscribers
Send message
Не удержусь и воспользуюсь случаем что бы сказать, что OVH — это худший ДЦ в Европе, с которым мне приходилось когда-либо работать (хуже, разве что, только online.net, который просто обманывают клиентов и не выполняют услуг которые сами рекламируют).
Заказыв несколько серверов у OVH, мы получили:
— Неадекватную регистрацию. Необходимость «подтверждать» личность и почтовый адрес с помощью отправки документов с личными данными непонятным людям по email (!!!!), при этом время ожидания ответа может быть любым.
— Криво работающую панель, которую писал человек, явно впервые в жизни увидивший angular.
— Увеличение цены на сервера через месяц после покупки. Никого не волнует что покупали вы сервер за 80 евро, теперь вы должны платить 100.
— Случайные добавки в инвойсах без пояснений, за пояснениями пишите в техподдержку и ждите (оказалось, что ovh «ошиблись и не начисляли за hardware raid в предыдущие месяцы»).
— На тикет о непонятных цифрах в инвойсе могут отвечать неделями, но сервера при этом блокируются в первый же день неоплаты (автоматическая оплата с карточки у нас так и не заработала, несмотря на все усилия). Никаких предварительных уведомлений о том, что оплата не прошла, нету.
— Тикет на удаление ненужной услуги, который висел без ответа 3+ недель (да, отказаться от некоторых услуг через панель тоже невозможно)
— И теперь внимание, вишенка на торте: после решения уйти от хостера, заявка на отказ от серверов не срабатывает, сервера заблокированы и не работают, но инвойсы при этом продолжают начислятся. Через несколько месяцев мы обнаруживаем, что «должны» OVH 700+ евро за услуги, которые не оказывались.

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

Собсеседования с вопросами из серии «вспомни первый курс по алгоритмам», были, но бинарные деревья были один раз. В основном задавали вопросы про всякие linked-list'ы, там все гораздо проще, если помнишь хоть что-нибудь.
Я программирую вот уже почти 10 лет, и я признаюсь вам честно — за все это время я не дочитал ни одной книги по программированию. Я просто начинаю засыпать, когда читаю их, и усвоение материала начинает стремиться к нулю. В результате начинаешь просто пролистывать и искать то, что тебе более интересно и понятно. Мне кажется, это личное предпочтение. Лично мне вот не нравится сам формат книги, но я с удовольствем посмотрю видеоуроки и полистаю официальную документацию, что бы «включиться» в новый фреймворк или технологию. Для меня это тоже самое, что и книга, но гораздо быстрее. Ну и да — никакая книга не заменит вам практику, технику «просто возьми и начинай что-то делать (тестовый проект, todo list, итд), решая задачи по мере поступления».
Сегодня в любой отрасли разработки умение пользоваться гуглом — это, на мой взгляд, один из ключевых навыков программирования. Конечно, когда я говорю «пользоваться гуглом», это значит не просто уметь слепо копи-пастить код со stackoverflow, а умение находить решения и адекватно применять их в своем проекте.
Именно поэтому лично я считаю идиотизмом задачи на собеседованиях вроде «а сбалансируйте-ка бинарное дерево». Недавно было такое собеседование, на мой вопрос «разрешается ли пользоваться гуглом», ответили «мы хотим проверить ваши навыки программирования, а не навыки пользоваться гуглом». Так и хотелось спросить, не запрещено ли у них случаем пользоваться гуглом в рабочее время, а то может быть, не стоит тратить время.
Как по мне, так гораздо более адекватно сегодня давать задачи более сложные (те, на которые невозможно найти ответ в гугле за 30 секунд поиска), но с возможностью пользоваться любыми источниками — такие задачи гораздо ближе к реальности, чем эфемерные «изобретите алгоритм, который точно кто-то уже изобрел до вас».
Поэтому я и попросил пояснить. Мне интересно, что Вы называете «сложными проектами», раз вы говорите, что «Писать сложные и нагруженные проекты на asyncio, в том числе используя aiohttp, можно и нужно». Я не собираюсь с вами спорить, но мне интересно понять в чем для вас заключается «сложный проект».
Писать сложные и нагруженные проекты на asyncio, в том числе используя aiohttp, можно и нужно, и на самом деле не так уж все и сложно.


Поясните, что вы имеете ввиду, когда говорите «сложные»? Про высоконагруженные я ничего и не говорю — да, скорее всего, это основное предназначение aiohttp. Приложение вроде Tinder может быть крайне высоконагруженным, но сложным его назвать язык не поворачивается (пару endpoint'ов и mongo-коллекций вроде user, swipe, match… ну message еще, хотя для swipe даже отдельной коллекции не нужно).

Как написать какой-нибудь форум или тот-же хабрахабр… да в общем, любой проект где вам может потребоваться сделать доп. итерации и ввести дополнительный функционал (добавить тэги, комментарии, панель администрирования с различными правами, итд) — я не очень представляю как это сделать без полноценной ORM системы.
Пробывали писать на aiohttp, и… не получилось. В определенный момент пришлось переписать все на стандартном стэке Flask + SQLAlchemy.
Aiohttp — хороший фреймворк для написания простых и плоских (flat) приложений (вроде todo-листа или веб-чата), но когда дело доходит до написания серьезных приложений, насыщенных ООП и с хоть какой-нибудь вложенностью, то делать это крайне тяжело. Поскольку любые функции для работы с БД должны быть корутинами, то и функции, вызывающие их, так же должны быть корутинами. В результате весь код превращается в одну большую корутину, со всеми вытекающими последствиями.

Ну об использовании ORM-фреймворков не может идти и речи, поскольку все они завязаны на динамике языке и использовании динамических @property и lazy-подгрузке данных из БД. Asyncio-проперти язык поддерживает, но это просто АДъ и реально работать с таким кодом нереально.
В результате выхода два — либо писать sql-запросы прямо в коде (приехали), либо вообще не использовать реляционных БД и писать на том же Mongo (возвращаемся к вопросу о том, какие приложения на таком стэке можно реально написать).
Загрузка типов с помощью reflection — это вообще очень-очень плохая идея, и дело тут не в OpenGL. Если ваш тип используется только в виде строки, то нет никакой гарантии что code stripping не пометит этот код как неиспользуемый и не удалит этот код. Именно поэтому в 5й Unity убрали AddComponent(string). Поправьте, если не прав.
Тут, конечно, двоякая ситуация. С одной стороны, я прекрасно понимаю людей у которых в жизни могут быть трудности, через которые они пытаются пройти (идиот-начальник, с работы собираются увольнять и т.д.), а тут под руку еще и эта дурацкая шутка, из-за которой надо извиняться.
С другой стороны, как можно перепутать кнопку, я не совсем представляю. Даже если был баг и отправлялось оно не по вине пользователя, то если начальство невменяемое и увольняет после гифки, которую (как уже всем стало известно) вставлял гугл, и при этом не хочет извиниться и взять человека обратно — то может оно и к лучшему, что человека уволили с такой работы.
Размер студии всегда поражал, конечно, но все-таки в этих 11и гигах не только редактор, но и SDK и прочее. И по функционалу он не с каким MonoDevelop не сравниться. Я, конечно, хотел бы писать C# в idea, но зачем им делать ее под C# когда у них есть решарпер?
Решение, конечно, странное. Насколько я понимаю, многие выбирают SQL Server именно из-за платформы Windows, а не наоборот. По крайней мере разработчики Eve Online на одном из выступлений как раз про это говорили — один из основных плюсов SQL Server по сравнению с каким-нибудь Oracle именно в том, что позволяет иметь стэк ПО (база+ОС+инструменты) от одной компании, и в случае проблем, понятно к кому в техподдержку стучаться.

А вот Visual Studio реально не хватает на OSX и Linux. Тот же Unity3D вынужден включать и поддерживать 2 разных редактора (MonoDevelop и студию).
Мне не очень понятен ваш сарказм про «шаблоны на вордпресс натягивать». Грамотно натягивать шаблоны на вордпресс — это тоже нужно уметь, это тоже работа, за которую, между прочим, платят неплохие деньги.

Не знаю, что вы называете «элементарными» вещами, но я из школьного/университетского курса математики помню только то, что мне в программировании приходилось использовать. А именно — логарифмы, производные, векторы, матрицы, триг. Все что выше этого (интегралы, дифференциальные уравнения) — как ветром сдуло. Что не отменяет того факта, что если мне будет нужно, я зайду в гугл и за пол часа — час вспомню, что там к чему.
Не увидел там ответа на мой аргумент. Ответ в стиле «а вот на изобретение дробей ушли тысячелетия» — это какой-то бессвязный бред, вступать в обсуждение и спорить о том откуда начинать летоисчесление у меня желания нет. Я говорю не о том, сколько у человечества ушло времени на изобретение алгоритмов, а о том, что не зная алгоритмов обхода бинарного дерева их практически невозможно придумать самому за 10 минут. Собственно, как и формулы мат. анализа и даже вещи гораздо проще. Если вы их не знаете, не изучали в школе или просто забыли, изобрести их самому невозможно.

В качестве аргумента я готов предложить вам сесть и не пользуясь сторонними источниками, используя лишь ручку и листок бумаги вывести формулу дискриминанта/корней уравнения для многочлена N-ной степени (4й, кубического, ну или хотя бы для обычного квадратного уравнения, 8й класс). Сможете решить, если не помните как оно выводится? Будьте честны хотя бы сами с собой.

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

Людям потребовались годы, что бы изобрести подобные алгоритмы, и ни один соискатель не сможет придумать их за 5 или за 10 минут. Взгляните правде в глаза — если человек на собеседовании решил подобную задачу и сказал, что он за 10 минут придумал алгоритм горизонтального обхода двоичного дерева, до этого про него не знав, то он либо гений, либо просто врет (что скорее всего).
ФБР в своем репертуаре. Мне кажется, кому реально нужно, уже давно пользуются такими чатами как tox и другими инструментами где есть сквозное шифрование. Благо таких инструментов — предостаточно. По-моему, кому-то из ФБР захотелось повышения на «сенсационном расследовании», вот и все.
Да, интересно, что к современной еде космонавтов это имеет мало отношения. Большинство продуктов на МКС насколько мне известно вообще дегидратировано (т.е. высушено), и упаковка имеет специальный клапан через который ее наполняют водой перед употреблением.
m.youtube.com/watch?v=49TkVLRWKoc
Насколько я понимаю, mail.ru и прочее пользуются эвристиками, основанными на поведении пользователей и их личных предпочтений. Например, один пользователь рассылки с сайтов поиска работы помечает спамом, в то время как второй пользователь (который в этот момент ищет работу) читает их все и переходит по ссылкам в письме. Для таких пользователей, очевидно, поведение спам-фильтра могут быть разными, и это хорошо. Опять же, инструменты вроде postmaster.mail.ru помогут в таких случаях понять, какой процент пользователей негативно реагируют на ваше письмо. Если такое количество велико, и все последующие письма начинают уходить в спам — возможно, проблема в содержании рассылки, а не в почтовике.

Все это еще поддается логическому объяснению, в отличии от черных списков ip-адресов, которые к спаму как правило не имеют никакого отношения.
Ну, если рассылка — реально не спам, а что-то полезное, то ситуацию с отправкой в спам можно контролировать через всякие сервисы вроде «Почтового офиса» на Яндексе. Там же можно смотреть, как люди реагируют на ваши письма.
А вот blacklist сервисы вроде uceprotect — это реальный трэш. Мало того, что любой желающий может занести туда любой ip-адрес вручную через систему сомнительных репортов, так они еще и вымогают деньги за «вынимание» ip-адреса (по 100 зеленых за IP-адрес) и принципиально не рассматривают варианты ошибочного внесения.

В свое время у меня так нехило «подгорало», когда один известный европейский ДЦ периодически блокировал нам сервер, руководствуясь этим списком. Приходилось стучать в техподдержку и объяснять, что почтового сервера у нас на заблокированной машине вообще нет (предлагали им даже проверить вручную), а то, что у нас есть недоброжелатели которые всеми возможными способами пытаются нам нагадить в том числе генерируя фейковые спам-репорты в сомнительных блэклистах — не наша вина.
А мне почему-то кажется, что ваши представления о том «что и как делается» связаны с чрезмерным употреблением контента российского ТВ.
Я работал в одном из крупнейших Московских вузов и средняя зарплата у сотрудников там была 10-15 тысяч рублей. Я лично присутствовал на совещаниях, где люди спрашивали «как нам выживать на такую зарплату?», а руководство просто мычало в ответ. Поэтому основной доход у преподавателей состоял либо из взяток («дополнительные занятия», называйте как хотите), либо из работы на сторонние организации (половина помещений была сдана в аренду под офисы).
С точки зрения программирования UV map — это просто набор 2d координат. В 3d-модели помимо информации о вершинах, треугольниках итд есть так же информация о расположении каждой вершины на текстуре, в виде массива из двухмерных векторов (размер массива — это собственно количество вершин). Каждый вектор имеет два float'a (x и y координата), значение каждой координаты как правило может быть от 0 до 1 (так проще всего — что бы получить координату на любой текстуре, просто умножаем на ее высоту/ширину).
При отрисовке треугольника для каждой вершины берутся ее координаты на текстуре, и отрисовывают соответствующий треугольник с текстуры.

При создании UV-карты и задании этих координат, можно конечно выделить свое пространство на текстуре для каждого отдельного треугольника. Однако, это работает только для очень простых геометрических форм (кубов, например). На практике, вы можете так сделать для органики, но оттекстурировать в фотошопе каждый отдельный треугольник что бы не было видно швов между ними будет просто адом.
Поэтому, uv-map создают кусками. Чем больше кусок, тем больше он будет искажен на текстуре, но тем меньше в результате будет швов.

Умение найти баланс между искажением геометрии и количеством и расположенем швов (что бы их не было видно) указывает на крутость uv-mapper'a.

Information

Rating
Does not participate
Location
Los Angeles, California, США
Date of birth
Registered
Activity