• Какую ubuntu (linux) поставить для верстальщика (Photoshop)?

    @deliro
    Тут два линукса на выбор: macOS и Windows.
    Ответ написан
    Комментировать
  • Устройство на работу?

    @deliro
    Ходят слухи, что надо что-нибудь уметь, чтобы что-то делать.
    Ответ написан
    Комментировать
  • Сколько стоит час веб-разработчика-фрилансера?

    @deliro
    Ты веcь такой кругом молодец, то знаешь, это знаешь. А теперь представь себе среднестатистический проект, который должен приносить бизнесу деньги. За две недели работы ты едва напишешь хлипкий CRUD для данных, неправильно смаппив бизнес-сущности в объекты ORM, ещё через месяц натянешь какой-то слайдер на jQ, попутно захватив 2мб JS кривых библиотек, а через два заказчик поставит тебе плохую оценку, потому что твой ценник он оплатил не за то, что ему нужно, а потому что ты знаешь монады, которые ему даром не сдались.

    А теперь давай представим простого программиста. Из алгоритмов он с трудом вспоминает сортировку пузырьком, а двусвязный список — предел его знаний о структурах данных, и даже этим списком он пользовался два раза в жизни. Хаскель он никогда не видел в глаза, C++ учил только в школе, вместо этого пишет неэффективный код на PHP. И у него есть опыт. За день он распишет сущности, за второй сделает универсальный CRUD, на третий день поднимет фронт на React'е с SSR. Да, внутренности проекта будут "медленными". Вместо O(logN) что-то будет выполняться за O(N) или даже O(N^2), но всем похер. Пока всё работает на приемлемом уровне — бизнес радуется.

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

    * Оптимальный баланс между говнокодом и идеальным кодом
    * Оптимальный баланс между скоростью разработки и оптимизацией кода
    * Оптимальный баланс между поддерживаемым кодом и костылями
    * Умение использовать те инструменты, с которыми ты работаешь. Опять же, для того, чтобы писать быстро, при этом имея минимальное количество говнокода и обеспечивая максимальную поддерживаемость (в пределах сроков). Например, можешь выкинуть в помойку свой Vim, как бы круто ты себя не чувствовал, разрабатывая в консольном редакторе, если продукты от JetBrains позволят за это же время сделать что-то лучше или чего-то больше
    * Чувство "знаю больше менеджеров". Это то чувство, когда тебе кажется, что "вот эта фича скоро изменится" и надо сделать архитектуру заранее более гибкой. Или "вот эту фичу мы через месяц выпилим" и не надо тратить на неё силы — напиши костыль и через месяц с чистой совестью удали его
    * Знания, как сделать ту или иную фичу. Потому что фичи повторяются (немного видоизменяясь) от проекта к проекту. И если ты сделал что-то за два дня, в следующий раз ты похожее сделаешь за три часа

    Что касается инструментов, выбери любой полноценный фреймворк, который умеет решать 90%+ потребностей "из коробки": Symfony, Django, Laravel

    Всякие "минималистичные" поделия вроде Falcon, Flask (в PHP не знаю, я на питоне пишу) оставь хипстерам. Пусть они говорят: "Мой фалкон такой быстрый, он написан на Cython". Тебя это не должно волновать, потому что бизнес с твоей скоростью разработки уже заработал достаточно денег, чтобы купить ещё десять серверов, пока фалконисты неделю гуглили, как прикрутить миграциии и запустить юнит-тесты на VPSке за пять баксов.
    Ответ написан
    5 комментариев
  • Что будет при увеличении вместимости канала?

    @deliro
    1. Нет, либо нет в 99.9999% случаев
    2. Да, чтобы ограничить то, на скольких OS тредах может расположиться рантайм. Это прямо влияет на CPU-bound задачи и почти не влияет на IO-bound. Например, у тебя есть функция, которая перемножает матрицы. В канал поступают матрицы, есть 10 горутин, которые читают оттуда и умножают матрицы. Очевидно, что если GOMAXPROCS будет == 1, то все эти горутины будут жить на одном треде и будут "мешать" друг другу, задействуя не более одного ядра процессора. Если GOMAXPROCS будет 10, то каждая горутина может расположиться в отдельном ОС треде и считать себе там матрицы на "собственном" ядре.
    3. Увеличится канал (sic!). Канал — это очередь. Канал без буфера — это "очередь", в которую можно добавить элемент только если с другой стороны этот канал кто-то пытается прочитать. Если такого нет — горутина будет ждать, пока этот канал кто-то захочет прочитать и наоборот, если кто-то читает канал, а с другого конца никто туда не пишет, то горутина будет ждать до тех пор, пока в канал кто-то не захочет записать. Если в канале есть буфер, то это уже становится полноценной очередью. Есть N слотов, если кто-то пришёл записать в канал, канал никем не слушается и там есть хотя бы один свободный слот — этот "кто-то" запишет в канал и пойдёт по своим делам и только если в буфере нет свободных слотов, то этот "кто-то" будет ждать, пока слот освободится. И наоборот, если кто-то слушает канал и в буфере канала уже что-то есть, то он сразу забирает первый на очереди элемент и уходит. Обычно это делают, чтобы сгладить нагрузку. Например, у тебя есть парсеры, которые что-то парсят, чтобы потом записать на диск. Но диск — штука непредсказуемая, может записать за 1мс, а может тупить 20мс. Довольно странно, если парсер будет ждать диск эти 20мс, хотя у него есть работа, которую он может выполнять прямо сейчас. Для этого можно создать буфер, куда парсер будет кидать данные СРАЗУ, а горутина, которая пишет на диск, заберёт их "когда-нибудь потом", когда диск перестанет тупить.
    Ответ написан
    4 комментария
  • Как выполнять вычисления с помощью функций (результат вызова предыдущей должен быть аргументом следующей)?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Решаю задачи на codewars, не могу решить задачу с функциями?

    Да, не можете.
    Ответ написан
    Комментировать
  • Как отследить лайки/комментарии/репосты VK API?

    iiiBird
    @iiiBird
    Пока ты спишь - твой конкурент совершенствуется
    гугли callback api. все нужные тебе события там приходят
    https://dev.vk.com/api/callback/getting-started
    Ответ написан
    Комментировать
  • Как в node.js на windows 10 запускать mp3 на фоне?

    @garbagecollected
    require('child_process').execSync(`'C:\Program Files\VideoLAN\VLC\vlc.exe' --qt-start-minimized --play-and-exit --qt-notification=0 "D:\path\to\file.mp3"`);
    Ответ написан
    1 комментарий
  • Как процессор ''понимает'' машинный код?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Никак не понимает - у него нет сознания для понимания чего бы-то ни было. Биты сами по себе реализуются на физическом уровне: есть сигнал - есть бит, нет сигнала - ноль. И далее сигнал либо идет дальше либо нет. Есть транзисторы - на базе транзисторов строятся другие логические элементы, которые перенаправляют сигнал дальше в зависимости от состояния. И вот это все вместе позволяет делать вещи такого типа: если вот тут такое-то сочетание битов, то сложить содержимое вот этих двух регистров, если другое - то вычесть и т.д. (примерно, конечно). В процессоре есть декодер команд - вот в нем и реализована вся эта логика по выполнению команд. Рекомендую изучить основы компьютерной схемотехники, устройство процессоров, транзисторов и как оно все работает.
    Ответ написан
  • Как составить запрос на последнего юзера, купившего товар?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Такой запрос делается через оконные функции
    SELECT `userID`, `productID`, `date`
      FROM (
        SELECT `userID`, `productID`, `date`,
               ROW_NUMBER() OVER `win` AS `row`
          FROM `table`
          WINDOW `win` AS (PARTITION BY `productID` ORDER BY `date` DESC)
      ) AS `t`
      WHERE `row` = 1
    Ответ написан
    1 комментарий
  • Что делает сеошник после полугода работы?

    vpetrov
    @vpetrov
    частный SEO-специалист, textarget.ru
    Полгода работы - это только завершение стартового этапа и подведение итогов по оценке выбранной на старте стратегии. Да и то, в зависимости от проекта - динамики за такой срок можно и не добиться (в конкурентных и сложных темах, на кривом сайте и т.п.).
    У вас странный подход к продвижению: нет необходимости в регулярной публикации контента, как и в закупке ссылок. Это очень зависит от тематики, проекта и целевой поисковой системы. И нельзя завершить оптимизацию как таковую:
    • за полгода, как правило, многие запросы успевают основательно сместиться по эталонному корпусу, и семантическое ядро надо корректировать;
    • в актуальных условиях загнать посадку в пределы топ-30 вполне может занимать квартал и больше. А вам ещё до топ-10 её прокачивать с помощью ПФ и ссылочного;
    • если не прибегать к простым и грубым методам типа ссылочного и накруток ПФ, то раскачка идёт за счёт сотен малых метрик, чей кумулятивный эффект будет учтён на уровне хостовый апдейтов - а это, примерно, годик;
    • нет никаких общих средств и методов, работающих всегда и для всех. Есть гипотезы, которые надо тестировать, и зачастую для этого нужна набранная поисковая статистика. Например, данные логов, статистика по активной поисковой семантике из консолей и систем аналитики и т.п.

    Простой пример: со старта вы считаете, что для вас наиболее интересен какой-то частотный ключ. По итогам продвижения за период на анализе взвешенной частотности выясняете, что ключ в принципе неконверсионный и приводит к вам мусорный трафик - в отличие от другого, менее частотного и незаметного.
    И я не рассматриваю тут более очевидные причины продолжать оптимизацию - конкурентов, изменения в поисковых алгоритмах, обычные тормоза с индексацией и расчётами основных метрик.
    И да, не каждому проекту в принципе нужны постоянные работы по оптимизации. Если "сеошник" начинает высасывать их из пальца - ставьте работы на паузу, или меняйте тариф.
    Ответ написан
    Комментировать
  • Какой ЯП выбрать для написания бота?

    @Azperin
    Дилетант
    JavaScript или Python, можешь кидать монетку. И нет, не каждый ЯП создан для определенной области и уж темболее нет специального языка для ботов дискорда и прочих подобных.
    99% шанс что как быстро ты загорелся, так быстро и потухнешь.
    Ответ написан
    8 комментариев
  • Почему человеку достаточно несколько примеров, а нейросети тысячи?

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

    Если ты создашь искусственную нейросеть аналогичной сложности и натренируешь её - она также сможет достаточно быстро "обучаться" для новой задачи.
    Ответ написан
    3 комментария
  • Как правильно закодировать в base64?

    @zkrvndm
    Софт для автоматизации
    Синхронно это можно сделать так:
    var text = 'Привет, мир!';
    
    var u8a = new TextEncoder().encode(text);
    
    var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
    
    var bytes = u8a, i, len = bytes.length, base64 = '';
    
    for (i = 0; i < len; i += 3) {
    	base64 += chars[bytes[i] >> 2];
    	base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];
    	base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];
    	base64 += chars[bytes[i + 2] & 63];
    }
    
    if (len % 3 === 2) {
    	base64 = base64.substring(0, base64.length - 1) + '=';
    }
    
    else if (len % 3 === 1) {
    	base64 = base64.substring(0, base64.length - 2) + '==';
    }
    
    console.log(base64);

    Асинхронно через FileReader: https://learn.javascript.ru/file#filereader

    P. S. Асинхронный способ:
    var text = 'Привет, мир!';
    
    var blob = new Blob([ text ]);
    
    var reader = new FileReader();
    
    reader.readAsDataURL(blob);
    
    reader.onload = function() {
    	
    	var base64 = reader.result.split(',')[1];
    	
    	console.log(base64);
    	
    };
    Ответ написан
    8 комментариев
  • Как скачивать с защищенных каналов Telegram?

    Stepashka20
    @Stepashka20
    (☞゚ヮ゚)☞
    Юзерботы (для питона telethon)
    Ответ написан
    2 комментария
  • Почему цвета в photoshop и в браузере отличаются?

    barkalov
    @barkalov
    Судя по всему, в фотошопе, Color Management стоит Adobe RGB или ProPhoto RGB.
    Надо поставить sRGB.
    Ответ написан
    Комментировать
  • Легален ли дизайн сайта со стилистикой популярных фильмов?

    @McBernar
    Не для продажи — всем пофиг.

    Продавать чужой арт нельзя. Ни как часть своего дизайна, ни как просто заглушка для картинок.

    Договаривайтесь с автором.
    Ответ написан
    3 комментария
  • Как изменить имена ключей в массиве объектов исходя из другого массива объектов?

    0xD34F
    @0xD34F Куратор тега JavaScript
    const result = arr2.map(function(n) {
      return Object.fromEntries(this.map(m => [ m[1], n[m[0]] ]));
    }, arr1.flatMap(Object.entries));

    или

    const keys = Object.entries(Object.assign({}, ...arr1));
    const result = arr2.map(n => keys.reduce((acc, m) => (acc[m[1]] = n[m[0]], acc), {}));
    Ответ написан
    4 комментария
  • Как ограничить потоки nodejs?

    @historydev
    Вам нужно лучше в теме покопаться, а конкретно Libuv, есть ограничение на 4 потока, если не помещаетесь - задача встаёт в очередь, если я правильно понял вопрос, ответ здесь.
    Ответ написан
    2 комментария