Задать вопрос
  • Почему Redis обрабатывает запрос в 5 раз дольше, чем запрос напрямую в бд?

    Eugene-Usachev
    @Eugene-Usachev
    Так в Postgres ты производишь выборку на стороне СУБД, а в случае с Redis выгружаешь всё по сети. Если в среднем строка весит 100 байт (а ты JSON используешь, так что там и больше быть может), то ты гоняешь по сети 10 000 * 100 байт, то есть примерно мегабайт памяти. Так и потом ты этот JSON разбираешь в JS (в нём же, да?), в то время как Postgres разбирает таблицу в C++.
    Ответ написан
    Комментировать
  • Возможно ли найти неоплачиваемую стажировку?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    Попробуйте взглянуть на вопрос с точки зрения бизнеса :)

    Приходит чел, говорит "нихрена не умею, но готов работать бесплатно". Какую работу можно доверить такому челу, чтобы от нее был хоть минимальный толк? Да никакую. Все что он там наваяет - все придется пропускать через ревью специалиста (то есть отвлекать его от основной работы). Так какой смысл в этом? Правильно, никакого.
    Ответ написан
    6 комментариев
  • С чего начать практику администрирования без скучных книг?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Работа в ИТ предполагает очень много чтения, а оно вам быстро надоедает. Зачем вы пытаетесь заниматься тем, в чëм успеха добиться не сможете?
    Ответ написан
  • Где найти сенсея?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Ни на каких. Незачем хорошо разбирающемуся в архитектуре бесплатно тратить своё время на того, кто даже не хочет становится программистом.
    Ответ написан
    9 комментариев
  • Как найти вакансии в ентерпрайзе будучи сеньером?

    Спрашивать ртом, как устроен процесс.
    Даже в пределах одной компании могут использоваться разные процессы.
    Ответ написан
    Комментировать
  • Удалённая работа в зарубежной компании — какие есть подводные камни?

    gdt
    @gdt
    Программист
    Работаю удалённо, получаю в валюте, всё ок. Если компания грамотная - то даже в текущей ситуации (пока что) все проблемы можно решить. Проблемы с получением валюты есть только у тех банков, которые попали под санкции, в других банках всё работает. Конечно, на работу людей из РФ сейчас стали принимать гораздо меньше из-за рисков (понятно каких я надеюсь), но в целом всё ещё предлагают - с начала марта 2-3 предложения получил, из которых одно достойное (не хуже, чем у меня сейчас).
    Как говорится, стучите - и вам откроют, дорогу осилит идущий и тд и тп. Не слушайте никого, во всем мире полно как идиотов, так и вполне адекватных людей, которые будут к вам относится нормально вне зависимости от национальность.

    Как происходит перевод оклада.
    Чаще всего оформиться в штат в зарубежную компанию сложно, поэтому открывается ИП, и заключается контракт на услуги консультанта. В банке создаете валютную сделку, туда прикрепляете контракт (как основание для получения денег). Затем раз в учетный период (месяц) вы выставляете счет своей компании, в котором прописываете сумму, оговорённую в контракте, этот счёт отправляете в компанию и в банк. Компания отправляет деньги, они идут обычно несколько дней, когда доходят - вы получаете уведомление от банка, что на ваш транзитный счёт упала валюта. Тут начинается валютный контроль - специально обученные люди смотрят ваш контракт, инвойс (счёт) и перевод, если всё совпадает - получаете свою валюту (с новыми правилами 80% сразу превращаются в рубли). Не совпадает - пишут чего не хватает, компания делает доп документы, отправляете в банк, всё получается.

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

    P. S. По упрощенке ИП платит 6% налога + 1% на сумму свыше 300000р (есть ещё другие обязательные взносы, но они идут в вычет, если всё вовремя платить, так что всё равно выходит 6%). В РФ в ФОТ штатских сотрудников отчисления занимают больше 30%.
    Ответ написан
    2 комментария
  • На собеседовании сказали, что не все функции - замыкания. Так ли это?

    @Arlekcangp
    Разработчик, Лид, Архитектор ПО
    Похоже вас поймали на том что в js кто-то решил переопределить термин "замыкание"... Т к javascript далеко не первый язык, в котором есть нечто, претендующее называться термином "замыкание", то следует в первую очередь рассмотреть общее определение. Возьмём его из википедии:

    Замыкание (англ. closure) в программировании — функция первого класса, в теле которой присутствуют ссылки на переменные, объявленные вне тела этой функции в окружающем коде и не являющиеся её параметрами. Говоря другим языком, замыкание — функция, которая ссылается на свободные переменные в своей области видимости.
    Замыкание, так же как и экземпляр объекта, есть способ представления функциональности и данных, связанных и упакованных вместе.
    Замыкание — это особый вид функции. Она определена в теле другой функции и создаётся каждый раз во время её выполнения. Синтаксически это выглядит как функция, находящаяся целиком в теле другой функции. При этом вложенная внутренняя функция содержит ссылки на локальные переменные внешней функции. Каждый раз при выполнении внешней функции происходит создание нового экземпляра внутренней функции, с новыми ссылками на переменные внешней функции.
    В случае замыкания ссылки на переменные внешней функции действительны внутри вложенной функции до тех пор, пока работает вложенная функция, даже если внешняя функция закончила работу, и переменные вышли из области видимости.[1]
    Замыкание связывает код функции с её лексическим окружением (местом, в котором она определена в коде). Лексические переменные замыкания отличаются от глобальных переменных тем, что они не занимают глобальное пространство имён. От переменных в объектах они отличаются тем, что привязаны к функциям, а не объектам.


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

    In programming languages, a closure, also lexical closure or function closure, is a technique for implementing lexically scoped name binding in a language with first-class functions. Operationally, a closure is a record storing a function[a] together with an environment.[1] The environment is a mapping associating each free variable of the function (variables that are used locally, but defined in an enclosing scope) with the value or reference to which the name was bound when the closure was created.[b] Unlike a plain function, a closure allows the function to access those captured variables through the closure's copies of their values or references, even when the function is invoked outside their scope.


    О! А тут нет никаких "функций, вложенных в функцию" и нет никаких "создающихся каждый раз" Хм... Интересно. Ну за то есть абзац о том как появились замыкания:

    The concept of closures was developed in the 1960s for the mechanical evaluation of expressions in the λ-calculus and was first fully implemented in 1970 as a language feature in the PAL programming language to support lexically scoped first-class functions.[2]

    Peter J. Landin defined the term closure in 1964 as having an environment part and a control part as used by his SECD machine for evaluating expressions.[3] Joel Moses credits Landin with introducing the term closure to refer to a lambda expression whose open bindings (free variables) have been closed by (or bound in) the lexical environment, resulting in a closed expression, or closure.[4][5] This usage was subsequently adopted by Sussman and Steele when they defined Scheme in 1975,[6] a lexically scoped variant of Lisp, and became widespread.


    Ага. Оказывается первоначально они появились в такой не конвенциональной, с сегодняшней точки зрения VM, как SECD... И их создатель прямо говорит, что это код плюс данные. Далее термин применяют к лямбда-выражениям. Ничего не говорится, должны ли эти выражения возвращаться функцией, или достаточно того, что бы они захватывали переменные из своего лексического (или динамического, как в common lisp) окружения. Далее нам сообщают, что некие мистеры, Сасман и Стил, спустя каких то 11 лет добавили это в свой язык Scheme... Ну что же. Посмотрим замыкания в Scheme... А именно откроем книгу Сасмана и соавторов "Структура и интерпретация компьютерных программ" или "SICP" Первый раз (исключая содержание) слово "замыкание" встречается в главе 2 "Поcтроение абстракций c помощью данных"


    Важная идея в работе с составными данными — понятие замыкания (closure): клей для
    сочетания объектов данных должен позволять нам склеивать не только элементарные
    объекты данных, но и составные.


    Но, как выяснилось, это не те замыкания... Это замыкание в том смысле, что структуру одного типа (в данном случае пары) могут ссылаться на самих себя. И это то как термин "замыкание" понимают математики. Далее в SICP никаких других определений замыканий нет (несмотря на то, что само их использование конечно же есть) Ну ничего не остаётся как посмотреть что же сегодня называют замыканиями в языке Scheme... Гугл по этому запросу выдал первой ссылкой: https://www.cs.utexas.edu/ftp/garbage/cs345/schint....
    Цитирую:

    Procedures are Closures
    Scheme procedure's aren't really just pieces of code you can execute; they're closures.

    A closure is a procedure that records what environment it was created in. When you call it, that environment is restored before the actual code is executed. This ensures that when a procedure executes, it sees the exact same variable bindings that were visible when it was created--it doesn't just remember variable names in its code, it remembers what storage each name referred to when it was created.

    Since variable bindings are allocated on the heap, not on a stack, this allows procedures to remember binding environments even after the expressions that created those environments have been evaluated. For example, a closure created by a lambda inside a let will remember the let's variable bindings even after we've exited the let. As long as we have a pointer to the procedure (closure), the bindings it refers to are guaranteed to exist. (The garbage collector will not reclaim the procedure's storage, or the storage for the let bindings.)

    Here's an example that may clarify this, and show one way of taking advantage of it.

    Suppose we type the following expression at the Scheme prompt, to be interpreted in a top-level environment:

    Scheme> (let ((count 0))
               (lambda ()
                  (set! count (+ count 1))
                  count)))

    ##

    Evaluating this let expression first creates a binding environment with a binding for count. The initial value of this binding is 0. In this environment, the lambda expression creates a closure. When executed, this procedure will increment the count, and then return its value. (Note that the procedure is not executed yet, however--it's just created.) This procedure, returned by the lambda expression, is also returned as the value of the let expression, because a let returns the value of its last body expression. The read-eval-print loop therefore prints a representation of the (anonymous) procedure.


    Что имеем ? В Scheme - вообще любая функция - это замыкание! Т к она всегда захватывает контекст, даже если там пусто!. Что видим в коде ? Ну с точки зрения Scheme тут конечно вложенная функция, т к let - это на самом деле lambda, но так происходит потому, что в Scheme нет переменных в понимании js. В js же можно считать, что глобальный контекст - результат действия нечто, что эквивалентно let. Захватывает ли любая функция в js этот контекст ? Не знаю. Но точно знаю, что в вашем примере это определенно так - х часть контекста, который захватывается функцией. Кто хочет поспорить - идите спорьте с создателями Scheme (скажите, когда попкорн покупать, я посмотрю как вас пороть будут. Набежало тут вайтишников =)) Кто то может сказать "а вот у нас в js замыкания определяются не так" На что я отвечу: знаете, товарищи, а идите ка вы лесом! Если есть однажды созданный и определенный термин, нужны весьма веские причины что бы менять его определение. Желания левой ноги очередного вайтишника тут не достаточно.
    Ответ написан
    30 комментариев
  • Как строить карьеру senior разработчику?

    opium
    @opium
    Просто люблю качественно работать
    вам 33 года уже поздно спрашивать пора уже самому решать что делать в жизни.
    Ответ написан
    3 комментария
  • Стоит ли создавать сообщество начинающих программистов?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Сообщество будет включать совместные переписки и группы для видения проектов, задачи для практики и вопросы.

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

    Планируется ещё создать обучающий материал.

    Который будет по определению хуже существующих учебников и официальной документации.
    Ответ написан
    5 комментариев
  • Какое из двух направлений выбрать в Python если интересны оба?

    Adamos
    @Adamos
    боюсь как в поговорке погнаться за двумя зайцами...

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

    Чтобы стать хорошим специалистом - нужно не торчать буридановым ослом на Тостере, а пробовать и нарабатывать опыт. Нравится ИИ - пробуй. Нравится аналитика - пробуй и ее. Старательно выбирая, чего НЕ делать, ты точно специалистом не станешь.
    Ответ написан
    Комментировать
  • Как еще не совсем состоявшемуся junior-у найти работу/стажировку/наставника?

    JohnnyGat
    @JohnnyGat
    Стараюсь писать код, понятный человеку.
    Первые 2 года пусть только учится. Без подработок.
    Во-первых и так после школы смена "ритма". Во-вторых первое время надо "работать" на отношение к ней преподавателей. Покажет "тягу к знаниям" и понимание, возможно (от преподавателей уже зависит) потом будет получать половину сессии автоматом.
    Ответ написан
    2 комментария
  • Fullstack: составить дорожную карту?

    @posters
    Еще более зрелищная карта со ссылками на доки и справочные сайты
    https://andreasbm.github.io/web-skills/?compact
    Ответ написан
    1 комментарий
  • Как лучше всего разместить sqlite базу в сети?

    gbg
    @gbg Куратор тега Linux
    Любые ответы на любые вопросы
    Никак. SQLite в принципе не предназначена для работы по сети.

    Сетевая SQL база должна поддерживать тот или иной механизм изоляции транзакций. Читайте про ACID
    Ответ написан
  • Как лучше осуществлять хранение даты последней активности пользователя?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    На наш взгляд, оптимальнее всего не забивать себе голову детскими фантазиями и высосанными из пальца проблемами.
    У тебя нет сайта, нет пользователей, нет одновременной активности, нет проблем с производительностью.
    Но зато уже есть ПРОБЛЕМА. Которую надо срочно решать.

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

    Не говоря уже о том что в реальности у тебя на сайте будет полтора инвалида, и единственной проблемой будет куда бы спихнуть это никому не нужное творение.
    Ответ написан
    3 комментария
  • Какие есть книги по Ruby, актуальные для 2020?

    oh_shi
    @oh_shi
    Что у самого стоит на полке: The Ruby Programming Language, The Ruby Way, The Rails 5 (у меня еще 4) Way. Ничего руби не отживает... просто хипстота перебежала на го и ноду. В СНГ не популярный, так и хрен бы с ним, вы на местных работать планируете? В рейтингах типо tiobe только на 15 месте? Так там Visual Basic на 6, даже выше пыха, стоит задуматься? Тот же пых если взять сколько там реальных проектов не на WP и прочих CSM с работой за еду? А в чем проблема с легаси? За 10+ лет ни разу не устраивался на проекте старше года, вот знал бы кобол, мог получать бы раза в 2 больше за работу над легаси, так что это такой себе критерий. А сколько лет хоронят джаву? Не слушайте прогнозы экспертов. Выберайте язык по личным предпочтениям, вам же с ним работать, а вакансий достаточно под любой спек.
    Ответ написан
    Комментировать
  • Где найти инвестора для мобильного приложения?

    Zoominger
    @Zoominger
    System Integrator
    Да где угодно, где лохи кучкуются.
    Проблема в том, что у лохов нет 350 тысяч, а умный человек в ваш блудняк не впишется. Придётся идти работать.
    Ответ написан
    Комментировать
  • Где можно искать партнёров программистов?

    Oposum
    @Oposum
    Как Вы представляете себе ресурс, где программисты, регистрируются с одним желанием - работать, и делать чужие проекты, за возможность получить когда-то "прибыль"? То, есть по схеме - ты работай сейчас, делай мое, а прибыль получим послезавтра?
    Для того, что бы, кто-то согласился - нужно иметь хотя-бы имя. Например - на Илона Маска, большинство согласятся писать на за будущий профит, который регулируется соглашением, а вот за Васю Пупкина из Верхних Кочек - не все согласятся даже за зарплату.
    И настораживает, что есть не Проект - а "проекты", то есть определенности вообще нет, есть желание...
    Ответ написан
    Комментировать
  • Книги, советы, курсы по архитектуре приложений?

    hack504
    @hack504
    Вроде все работает, все более менее оптимизировано, но мне все равно кажется, что мой код ужасен. ПРОСТО УЖАСЕН.

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

    Практический опыт важнее теории. По крайней мере изучение архитектуры уже предполагает наличие опыта
    Ответ написан
    2 комментария
  • Как найти единомышленников для проекта, или влиться в стартап?

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

    2) Примерно 75% всех компаний, где было несколько основателей было создано бывшими сотрудниками какой-то компании (т.е. коллеги по работе), либо сокурсниками.

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

    4) В РФ нет грамотного рынка инвестций, поэтому вероятность того, что компания выстрелит и ты там что-то получишь, крайне мала.

    5) Сама идея, что ты проработаешь в какой-то компании со старта условно лет 5 и увидешь, как она "вышла в люди", и тебе за преденность и гемор что-то будет положено - не работает. Отминусуют хлоднокровно, когда станешь неудобным или неэффективным. Причем, как в РФ, так и США так принято делать.

    __

    Другими словами, не стоит тешить себя мыслью, что ты там присоединишься к какому-то стартапу и заработаешь куча бабла. Хочешь денег - принимай на себя все риски и делай все сам. Не можешь сделать сам, либо учи стек, что требуется, либо покупай время людей.
    Ответ написан
    Комментировать