Pull to refresh
26
0.1
JSON Statham @Finesse

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

Send message

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

А что тут удивительного? Вот если бы надо было бинарное дерево на листочке развернуть, ленту Твиттера спроектировать за полчаса или расказать по STAR методологии о конфликте на предыдущем месте работы, вот тут бы они пацана нагнули, конечно.

Тем временем мы уже подвезли релиз AmneziaVPN с маскировкой VPN трафика под веб трафик (на основе cloak), скоро сделаем анонс. DPI проходит как по маслу, уже протестили в Туркменистане.

Просмотр метаданных фотографии
http://exif.regex.info/exif.cgi
https://www.imgonline.com.ua/
https://www.pic2map.com/
http://fotoforensics.com/


Поиск по объектам на кадре
https://yandex.ru/images/
https://images.google.com/
https://tineye.com/


Опознаем растения и птиц
https://identify.plantnet.org/
https://merlin.allaboutbirds.org/


Поиск по серийному номеру фотоаппарата
http://www.stolencamerafinder.com/
http://www.cameratrace.com/


Время съемки по солнцу
https://www.suncalc.org/


Поиск по снимку со спутника
https://search.descarteslabs.com/

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

Давно не могу понять подобных утверждений. Предположим, пользователь получил оригинальный iso-образ Windows 10 из MSDN (на торрентах скачивается без проблем), по хэш-сумме проверил отсутствие вмешательств, установил, активировал через какой-нибудь AAct и пользуется. Откуда здесь может появиться зловредное ПО, неработающие функции и вся эта подобная чушь? Максимум можно предположить, что в самом AAct сидит какой-нибудь троян, но насколько мне известно, в нём ничего не сидит. А если не из AAct, то откуда ещё?

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

Начнем с того, что по статистике 90% трейдеров сливают свой депозит за очень короткое время, а 99% никогда не обходят по доходности индекс фондового рынка S&P500 на длинных дистанциях. По способу заработка трейдинг не очень далеко отошел от казино.

Если вы действительно хотите понять как заработать на ценных бумагах, то почитайте про пассивные инвестиции, корреляцию между разными классами активов, теорию эффективности портфеля Гарри Марковица, про ребалансировку портфеля, про ETF на индексы фондового рынка (вроде SPY и VOO), на гос. облигации (вроде TLT), корпоративные облигации (вроде LQD или VCLT), на золото (вроде GLD или IAU), про минимизацию брокерских комиссий, комиссий фондов и налогов. Лучший, кто об этом пишет по-русски это Сергей Спирин. У него в Живом Журнале справа есть целая серия статей про пассивные инвестиции.

Пассивные инвестиции не обещают сверхдоходов. В среднем это будет около 3-6% до налогов в долларах в год. Но за счет сложного процента за долгое время вы с вашей программистской зарплатой, постоянно добавляя денег в портфель, вполне можете стать долларовыми миллионерами за 30 лет.
Господи, можно просто зарегистрироваться как фейковый студент (США) и получить вообще безлимитный google drive (максимум размер файлов 5 TB единственное ограничение, причем там еще общие диски есть). 4pda.ru/forum/index.php?showtopic=889003&st=4740
Причем там и Office 365, и one drive 1 Tb, и т.д. можно заполучить.

Лучше использовать Санта-барбару институт. Или вашингтон…

Я спустя 3-4 года возни с redux пришёл к таким выводам:


  • Action types не только не нужно хранить отдельно от action creators. Их вообще не нужно делать. Для чего они могут пригодится? Для того чтобы иметь в рамках одного типа несколько фабрик action-ов. На моей практике такой случай не наступил ни разу. Могу смело сказать, что в 99% это просто бойлерплейт. Мусор. Мусору нечего делать в кодовой базе. Хотите глоссарий экшнов — автоматизируйте это. Как связывать reducer-ы с action-ами? Очень просто импортировать actionCreator-ы там где у вас reducer-ы и цепляться к ранее установленным (автоматически) actionCreator.type. Эти не сильно простые шаги уменьшат боль при написании redux приложений раза в 2.


  • Держите в простых случаев reducer-ы там же где и actionCreator-ы. А сложных случаев избегайте (дробите). Может показаться странным, но это радикально уменьшает количество бойлерплейта и упрощает поддержку кода. При этом различные слои не путаются, просто лежат ближе. Недостатков пока не выявил. А вот разного рода селекторы бывает полезным вынести отдельно, т.к. их иногда может 3\4 от кода набраться и они не привязаны ни к каким экшн-тайпам.


  • Используйте proxy в reducer-ах. Это невероятным образом улучшает как кодовую базу, так и экономит ваше время. Мутабельный код с преимуществами иммутабельного. Лучшее что я видел для redux. Реализация довольно простая, да и есть готовые решения. После внедрения бизнес-логика перестаёт выглядеть как тихий ужас.


  • Забудте про switch-case. Ден привёл в качестве примера и понеслась. Преимуществ у них похоже никаких, но все их пишут и пишут. Куда удобнее держать привязку action-type -> handler(state, action, rootState)


  • 1 action = 1 handler. Не прогонять каждый action через все reducer-ы. Принудительно привязывать обработку задачи к одному handler-у. Делает код куда более предсказуемым. Это одна из важнейших вещей в redux-е. Как это обеспечить? Ну например держать путь к reducer-у в action.type. Хотя тут много вариаций.


  • Поменяйте сигнатуру каждого редьюсера с (state, action) на (state, action, rootState). Это позволит избежать тех хаков, когда вам для изменения под-части стора не хватает данных из другой ветви стора, и вы жутко извращаясь пихали эту логику прямо в actionCreator или выше. Это бессмысленный бред. При этом разумеется из одной ветки стора на другую повлиять нельзя. Цепляться не обязательно к rootState, тут надо смотреть на ваш IoC


  • Используйте нормализацию. Ну тут много про это писали. Это архиважно


  • Используйте memo, useAutoCallback, useAutoMemo, PureComponent и прочие примитивы с shallowComparison. Это азбука производительности вашего приложения. Очень помогут weakMemoize-ы разного рода. Селекторы, линзы и прочее. Обычно в серьёзном приложении таких утилит\помощников скапливается много.


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

Первая ошибка. Вместо того чтобы считать менеджеров «идиотами» следовало бы научится их слушать и правильно интерпретировать то что они пытаются донести.

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

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

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

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

Когда делаешь фронт, есть два источника проблем — пользователь и бекенд.

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

… Но такие придурки существуют, причём существуют в том же самом мире, где есть другие придурки, пропускающие это говно на кодревью.
… Но мы сделаем, потому что мы профессионалы…
… и дураки легко сломают наш код.

Пятая ошибка. Считать всех вокруг придурками, идиотами, дураками, при этом считать себя профессионалами.

Мы написали самый полезный код в своей жизни, но его выкинули на помойку. Вместе с нами

В завершении ожидаемый и закономерный результат. Жизнь все расставила по местам.

К чему я это все? Я бы рекомендовал вам к прочтению вот эти книги. Все они в меньшей степени про код и в большей степени про то, как перестать доказывать всем, что ты профессионал и стать профессионалом:

  • The Pragmatic Programmer: From Journeyman to Master (by Andrew Hunt_
  • The Passionate Programmer: Creating a Remarkable Career in Software Development (by Chad Fowler)
  • Soft Skills: The software developer's life manual (by John Sonmez)
  • The Clean Coder: A Code of Conduct for Professional Programmers (by Robert C. Martin)

Information

Rating
2,467-th
Registered
Activity