Задать вопрос
  • Как правильно работать с разработчиком-фрисансером?

    uvelichitel
    @uvelichitel
    habrahabr.ru/users/uvelichitel
    Я лансер
    как лучше всего структурировать работу
    ТехническоеЗадание и ТехническийДолг по этому заданию

    нужно брать специалиста на зарплату?
    хорошо бы, но лучше контракт. Во всяком случае удаленка сэкономит ваш бюджет и мое время
    Ответ написан
    Комментировать
  • Как работать с указателями на массивы (слайсы) в GO (golang)?

    uvelichitel
    @uvelichitel Куратор тега Go
    habrahabr.ru/users/uvelichitel
    origArray := []string{"1", "2"}  //уже дает вам слайс, а не массив
    origSlice := origArray[:]   //в этой строке нет никакого смысла
    //массив можно получить так 
    var myArray [2]string = [2]string{"1", "2"}

    Слайс в Go - ссылочный тип. Объект этого типа содержит три атрибута len длину Int, cap поместительность Int и указатель на первый элемент Pointer.
    Все аргументы в Go передаются копированием значения, то есть передавая функции слайс вы передаете копию слайса. Эта копия будет содержать собственные len и cap, но однако указатель на тот же первый элемент что и аргумент. Таким образом, чтобы модифицировать элементы слайса достаточно передать его функции, чтобы защитить слайс от модификации функцией нужно передавать его копию сделанную встроенной функцией copy(dst, src) Чтобы дать функции доступ к длине len и вместительности cap слайса следует передавать указатель на него. append очевидно требует изменения не только элементов но и длины и вместительности слайса поэтому передавать нужно указатель на слайс.
    foo(&origSlice){
    *origSlice = append(* origSlice, "3")
    ...

    Однако осторожней
    foo (origSlice){
    origSlice[1]="baz"
    ...
    }

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

    uvelichitel
    @uvelichitel
    habrahabr.ru/users/uvelichitel
    Относительно алгоритмизации
    можно от обратного - если не нашли свой алгоритм у Кнута, значит он неправильный.
    название переменных одним символом и прочее
    линтеры проверяют
    Ответ написан
    Комментировать
  • Почему преподаватель так считает?

    uvelichitel
    @uvelichitel
    habrahabr.ru/users/uvelichitel
    Ого. А мне коллега врал, что в PHP кроме ассоциативных других массивов и нет. И еще рассказывал что у PHP спецификации нет, а мануал для каждой версии отдельный. Голова кругом идет, как вы его готовите?
    Ответ написан
    Комментировать
  • Как отослать данные определённому сокету?

    uvelichitel
    @uvelichitel Куратор тега Go
    habrahabr.ru/users/uvelichitel
    Данные отправляются всем в цикле
    for cs, _ := range ActiveClients {
                    Message.Send(cs.websocket, 'Testtt')
                    if err = Message.Send(cs.websocket, clientMessage); err != nil {
                        log.Println("Could not send message to ", cs.clientIP, err.Error())
                    }
    }

    отправить данные на определённый clientIP (пусть 127.0.0.1) например так
    for cs, _ := range ActiveClients {
             if cs.clientIP ==  "127.0.0.1"{
                    Message.Send(cs.websocket, 'Testtt')
                    if err = Message.Send(cs.websocket, clientMessage); err != nil {
                        log.Println("Could not send message to ", cs.clientIP, err.Error())
                    }
             }
    }
    Ответ написан
    Комментировать
  • Как вы относитесь к возможности сортировки вопросов Тостера по степени их сложности?

    uvelichitel
    @uvelichitel
    habrahabr.ru/users/uvelichitel
    • Против
    • Для некогерентных вопросов и ответов добавьте возможность минусовать
    Ответ написан
    Комментировать
  • Какой алгоритм работы модуля по логированию изменений файла?

    uvelichitel
    @uvelichitel
    habrahabr.ru/users/uvelichitel
    Вроде логично, что stream закрыт. Вы же не можете держать FileDescriptor открытым для одновременной записи и чтения двумя процессами. Это неконсистентно. Потом держать файл в памяти просто как dump пожалуй дороговато, наверное разумней хранить dump в файловой системе(если у вас журналирующая файловая система, то она сама все сделает). Посчитать изменения проще всего gnu-utill коммандой diff или ищите библиотеки.
    Ответ написан
    Комментировать
  • Делаю поисковик. На каком основном алгоритме лучше основывать выдачу результатов?

    uvelichitel
    @uvelichitel
    habrahabr.ru/users/uvelichitel
    Очень жёстко анализировать оплату счетов претендентами на первые места в выдаче?
    Ответ написан
    6 комментариев
  • Что значит расчитана на enterprise проекты (Java)?

    uvelichitel
    @uvelichitel
    habrahabr.ru/users/uvelichitel
    • Рассчитана на enterprise проекты значит - бюджеты на 100 CPU Core и 500 Gb RAM. У кого нет, на того не рассчитана.
    • Большой плюс Java в том, что enterprise разработчикам хорошо платят.
    Ответ написан
    Комментировать
  • Седжвик vs Кормен, кто лучше?

    uvelichitel
    @uvelichitel
    habrahabr.ru/users/uvelichitel
    Седжвика можно послушать живьем https://www.coursera.org/course/algs4partI Отлично читает. Я пользуюсь Корменом, поскольку Седжвик слишком для меня увязан на Java. Я работаю с другими языками, мне интересны только алгоритмические абстракции.
    Ответ написан
    1 комментарий
  • Как называется строка выделенная grave accent(`) в golang?

    uvelichitel
    @uvelichitel Куратор тега Go
    habrahabr.ru/users/uvelichitel
    Теги Tag по крайней мере специфицированы. Кроме использования посредством reflect еще стоит посмотреть свойство Type identity Вот пример этого свойства https://play.golang.org/p/dzng_FsbmA
    Ответ написан
    Комментировать
  • Где и главное как найти сильных Go (и не только) разработчиков под специфические задачи?

    uvelichitel
    @uvelichitel Куратор тега Go
    habrahabr.ru/users/uvelichitel
    Самые сильные из известных мне российских Go разработчиков - nsf и Дмитрий Вьюков.
    Ответ написан
    Комментировать
  • Кнут - "Искусство программирования", как осилить?

    uvelichitel
    @uvelichitel
    habrahabr.ru/users/uvelichitel
    Думаю без систематического образования вы споткнетесь на второй главе Кнута. Систематическое образование - это годы труда.
    Инженер с хорошей алгоритмической подготовкой должен быть способен объяснить, что такое 'relaxed red black b-tree', зачем они нужны и как их готовить неотстающему школьнику.
    Просто поработайте над серьезными проектами, в сильной команде с хорошим лидом(если повезет). Классические алгоритмы и структуры данных очень даже постигаемы без высшей математики. Здравого смысла и смекалки вполне достаточно. Математическая подготовка необходима лидам и архитекторам(проект серьезней домашней веб страницы не обходится без алгоритмической оптимизации), разработчикам она только желательна.
    Ответ написан
    Комментировать
  • Как прeодолеть зону комфорта, стать фрилансером не обанкротившись?

    uvelichitel
    @uvelichitel
    habrahabr.ru/users/uvelichitel
    Я думаю на ресурсе полно действующих фрилансеров желающих получать >3К евро работая в сильной команде над интересными проектами. Иметь оплачиваемый отпуск, пенсионный стаж, мед. страховку, кофе печеньки и уборщицу в комфортабельном офисе, участие в профильных конференциях, хорошую запись в резюме и при этом время на семью. Рискну предположить, что это смахивает на мечту любого(ну почти любого) российского фрилансера. Есть еще хозяева дворовых веб студий, клепающих как семечки мусорные landing page и конвейерные your very own and truly original web site из пяти шаблонов. Для последней категории мечта неосуществима ввиду слабого профессионального уровня. Работу, которая у вас есть(если не лукавите) я бы стал менять только на лучшую или на собственный instagram, telegram, moneygram etc. Фриланс в вашем случае на мой взгляд просто шаг назад. Работа на дядю (даже паскудного) не такая уж трагедия.
    Ответ написан
    2 комментария
  • Что такое машина Тьюринга и какое отношение она имеет к программированию?

    uvelichitel
    @uvelichitel
    habrahabr.ru/users/uvelichitel
    Этим взламывалась enigma во Вторую Мировую. На этом основана архитектура фон Неймана на которой был построен ENIAC и все компьютеры после. Это расширение конечного автомата, которым прошит любой контроллер, которое реализовано в любом парсере, лексере и компиляторе.
    Ответ написан
  • Сокет чат на go?

    uvelichitel
    @uvelichitel Куратор тега Go
    habrahabr.ru/users/uvelichitel
    Используется паттерн pub-sub. Действующий прототип можете рассмотреть на https://github.com/uvelichitel/nezabu/ (Извинения за легкий самопиар, можете пользоваться кодом на свое усмотрение.)
    Ответ написан
    4 комментария
  • Почему LAMP такой быстрый?

    uvelichitel
    @uvelichitel
    habrahabr.ru/users/uvelichitel
    ...грузится 3 секунды...

    Это он не медленный, это он тяжелый, как загрузится так уж разгуляется.
    Ответ написан
    Комментировать
  • Как эффективно хранить "связность" между пользователями?

    uvelichitel
    @uvelichitel
    habrahabr.ru/users/uvelichitel
    • Транзитивность в моем понимании означает
      A->B + B->C = A->C
    • Среди тысячи пользователей вряд ли все связны.

    В таких посылках речь идет о связности графа. Иерархические структуры данных(дерево, граф) инородны для реляционной алгебры SQL. Известные решения Adjacency list и Nested sets. Adjacency list требует применения WITH RECURSIVE. Nested sets предполагает очень много пересчета при операциях(особенно INSERT).
    Нужную вам модель данных было бы удобней реализовать в hierarchical DB (например просто hierarchical key value, Redis или levelDB сойдет) или graph DB или документарной DB (например просто в XML который в сути своей иерархичен)
    Ответ написан
    1 комментарий
  • С какого языка программирования начать изучение back-end?

    uvelichitel
    @uvelichitel Куратор тега Go
    habrahabr.ru/users/uvelichitel
    TL;DR востребовано, перспективно и денежно - Java, Python но в основном full-time enterprise. Freelance - PHP востребовано, не очень перспективно и денежно.
    Ruby проектировался не для web, это язык общего назначения. Rails это Ruby для web, но он громоздкий, Sinatra поменьше и злегантней. Python'у отдают предпочтение предпочтение enterprise - google, yandex. Python комфортней для web в плане синтаксиса и библиотек чем голый Ruby без Rails обвески. PHP проектировался для web. Не все признают его полноценным языком общего назначения, но в специализации ему нет равных. База готового кода огромна. Можно больше ничего не писать (все уже написано), можно собрать работающий url на PHP вообще не будучи программистом. Go проектировался для сетевого программирования, ниже уровнем, полноценней, быстрее, лучше спроектирован. Go - мой выбор, контрактов не очень много, оплачиваются нормально, конкуренция не высока. Fun factor - мне приятно на нем писать, а от PHP меня подташнивает(это личное).
    Изучение технологий рекомендую начать со стека протоколов(TCP/IP, http), метафоры port/socket/fileDescriptor, концепции server(отчетливого понимания, как последовательный в своей сути процессор может одновременно обслуживать несколько запросов и соединений).
    Ответ написан
    3 комментария