• Идти ли в ВУЗ на электронщика?

    Psychosynthesis
    @Psychosynthesis
    Fullstack developer and radio engineer
    В ВУЗ идти стоит в любом случае - это лучшее что вы можете сделать для своего образования.

    У меня вышло так, что пришлось восстанавливаться в ВУЗе после армии с потерей года и я ни одного дня не считаю потраченным, и вам не советую сомневаться.

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

    Так что считаю тут и обсуждать нечего - конечно идти в ВУЗ в любом случае и точка.

    И да, так же я считаю, что Конструирование и Технология РЭС - одна из наиболее всеобъемлющих специальностей, так что идти стоит на неё (хотя с этим конечно можно спорить).
    Ответ написан
    Комментировать
  • Ошибка со шрифтом, только в Mozila Firefox, в чём причина?

    Psychosynthesis
    @Psychosynthesis
    Fullstack developer and radio engineer
    Для тех, кто будет искать решение ещё одной проблемы со шрифтами, в частности:

    downloadable font: kern: Too large subtable, table discarded


    У Firefox есть проблемы с некоторыми шрифтами, это известный баг - https://bugzilla.mozilla.org/show_bug.cgi?id=1185685

    Насколько я понял из беглого ознакомления, это крайне специфичная проблема и с ней чаще всего сталкиваются именно при использовании OpenSans. Связано это с тем, что у OpenSans особо обширный набор символов, а ещё внутри шрифта может быть таблица для кернинга и так как конкретно у OpenSans она слишком велика Firefox не может этот шрифт обработать. Сам баг закрыт с пометкой WONTFIX.

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

    Есть вам очень хочется использовать OpenSans, достаточно просто скачать более новую версию файлов шрифта (я взял там же где и раньше на https://fonts.google.com похоже они как-то решили это проблему).
    Ответ написан
    Комментировать
  • Почему NPM пакеты устанавливаются долго, а то и вообще не устанавливаются?

    Psychosynthesis
    @Psychosynthesis
    Fullstack developer and radio engineer
    Данная проблема встречается во многих версиях npm и NodeJS, и, насколько я понимаю, в некоторых случаях может быть актуальна до сих пор, потому решил ответить на вопрос сейчас.

    Насколько я понял из гугления, если исключить самую очевидную проблему ("у вас проблемы с инетом"), то причин подобного поведения может быть множество. Я расскажу как я оказался в аналогичном положении и что делал для решения проблемы, возможно кому-то это будет полезно.

    В моём случае однажды появился назойливый баг с алиасами Babel, что в итоге потребовало его обновления, а после обновления Бабеля просто перестал собираться проект. Пришлось обновлять Node, затем npm и т.д. В итоге, проект всё же собрался, но появилась проблема, озвученная в вопросе - npm ci (это почти то же что и npm install, только ставит строго те версии, которые указаны в package-lock) стал работать ооочень медленно, подолгу зависая на разных случайных пакетах.

    Я предположил, что причин у подобной ситуации в итоге может быть две:
    1. Забился кэш ноды и\или npm - я пробовал npm cache clean --force и удалял все папки, создаваемые при сборке, а также все найденные мною папки cache, это не помогло. В итоге я не придумал ничего лучше, чем полностью удалить Node и npm из системы, что не так-то просто сделать на линуксе.
      Для удаления ноды мне лично неплохо помог вот этот пакет https://github.com/brock/node-reinstall (правда руками тоже потом пришлось искать и удалять папки с именами node и npm)... Для свежей установки ноды в сети советуют использовать NVM, однако на мой личный взгляд NVM это паршиво работающее, запутанное и кривое говно, с корявой документацией и постоянно изменяющимся синтаксисом команд, поэтому я так делать не советую (да, я пробовал, он работает, но с ним постоянно возникают какие-то проблемы, поэтому без необходимости иметь две разных ноды на одной машине его лучше всё же не ставить).
      Лучше ставьте нужную версию ноды по инструкции с офф.сайта для вашей системы, используя стандартный менеджер пакетов. По крайней мере в случае с Ubuntu 20.04 это сработало отлично. Инструкции для Ubuntu и Debian-based дистрибутивов лежат вот тут: https://github.com/nodesource/distributions/blob/m...

      Вообще там по ссылке много вариантов, но вот пример для установки 14-й версии самым простым способом:
      # Using Ubuntu
      	curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
      	sudo apt-get install -y nodejs
      
      	# Using Debian, as root
      	curl -fsSL https://deb.nodesource.com/setup_lts.x | bash -
      	apt-get install -y nodejs



    2. Второй возможный вариант - проблема в том, что для новых версий npm как-то изменились сервера удалённых репозиториев некоторых старых пакетов, из-за их устаревания (я замечал что при попытке установить пакеты чаще всего "фризы" случались именно на старых пакетах, типа третьей версии TypeScript).
      Я, к сожалению, не знаю нюансы работы системы репозиториев npm, поэтому это лишь предположение. В данном случае, рекомендация одна - попытаться обновить пакеты до последних версий, и по возможности избавиться от depricated пакетов.



    Не претендую на истину, возможно это лишь баг какой-то из версий npm или даже конкретной связки NodeJS + npm. Однако возможно кому-нибудь пригодится предложенный мной путь решения.
    Ответ написан
    Комментировать
  • Проблема с useEffect?

    Psychosynthesis
    @Psychosynthesis
    Fullstack developer and radio engineer
    Добавьте в стейт isFirstRender, например...

    const [isFirstRender, setNotFirstRender] = useState(true);
    
    useEffect(() => {
    	if(isFirstRender) {
    		// тут запрос
    		setNotFirstRender(false);
    	}
    }, [param1, param2, param3, isFirstRender]);


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

    Что-то типа:

    useEffect(() => {
    	Promise1.then(() => { // первый параметр
    		Promise2.then(() => { // второй
    			Promise3.then(() => { // третий
    			}
    		}
    	});
    }, [param1, param2, param3]);


    Хотя слишком много промисов тоже так себе конструкция... Я бы на вашем месте подумал всё ж где можно улучшить архитектуру.
    Ответ написан
    Комментировать
  • Почему из динамической таблицы не приходят данные в $_POST?

    Psychosynthesis
    @Psychosynthesis
    Fullstack developer and radio engineer
    Ну... Во первых я бы добавил форме атрибут name (пусть для примера это будет "superform"). После этого она станет доступна по document.forms.superform. Хотя вроде и сейчас должна быть доступна как document.forms.item(0), но с нэймингом удобнее...

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

    Если же вам принципиальна таблица, попробуйте переопределить метод Submit формы и написать свой обход по элементам и отправку, это гарантированный вариант.

    Ещё, как вариант, можно после добавления элементов попробовать дёрнуть метод form.reset().
    Ответ написан
    Комментировать
  • Как можно сделать проверку авторизации?

    Psychosynthesis
    @Psychosynthesis
    Fullstack developer and radio engineer
    Лучше всего используйте какой-нибудь фреймворк. В двух словах описать как сделать БЕЗОПАСНУЮ авторизацию, достаточно сложно, т.к. для этого нужно достаточно много условий, начиная от базовых принципов, заканчивая проверкой входных данных.

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

    Psychosynthesis
    @Psychosynthesis
    Fullstack developer and radio engineer
    На случай, если кто-то будет искать решение по аналогичной проблеме.

    npm отказывался запускаться (после установки create-react-app), выдавая ошибку:
    Error: ENOSPC: System limit for number of file watchers reached, watch '/home/user/reai-comp/public'

    Чистка кэша не помогала. У некоторых помогает перезагрузка, но не в моём случае.
    Решила проблему единственная команда:
    echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
    Ответ написан
    2 комментария
  • Какую клавиатуру/наушники/микрофон купить?

    Psychosynthesis
    @Psychosynthesis
    Fullstack developer and radio engineer
    Клава BTC/Cherry/Logitech
    Уши Sennheiser/Audio-Technica/AKG
    Микрофон... Хз тут сложный вопрос. Если реально хороший микро, то это Тула или Октава, либо Shure, например. Но это всё реально много денег стоит. Тут зависит сильно от того для чего он нужен, надо с этим определиться и там уже далее смотреть.

    Что касается клавы... механическая клава это та ещё херня, на самом деле. Оно прикольно первые лет пять, потом уже начинаешь думать как бы чё потише было и чтобы ход помягче. В пределах 5к нормальную механику придётся поискать, конечно. А вот обычную островного типа с ножничным механизмом за такие деньги можно взять уже хорошую и прослужит она прилично.
    Ответ написан
    Комментировать
  • Как аналоговый сигнал от датчиков оборота куллера преобразовать в логический 0/1?

    Psychosynthesis
    @Psychosynthesis
    Fullstack developer and radio engineer
    Как вам уже верно указали, на выходе куллера уже ШИМ, который легко можно считать любым мелким контроллером.

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

    Проще некуда уже, главное подобрать полевик подходящий.
    Ответ написан
    1 комментарий
  • Как писать js-модуль для Webpack, чтобы объекты модуля были доступны глобально?

    Psychosynthesis
    @Psychosynthesis Автор вопроса
    Fullstack developer and radio engineer
    Всё оказалось куда как проще.
    import * as ClipboardJS from 'clipboard';
    import * as lazy from 'jquery-lazy';
    
    window.ClipboardJS = ClipboardJS;
    window.lazy = lazy;
    // Работает как ожидается - обе библиотеки доступны глобально.
    Ответ написан
    Комментировать
  • Как сделать два бандл файла?

    Psychosynthesis
    @Psychosynthesis
    Fullstack developer and radio engineer
    Вероятно автор уже давно нашёл ответ на свой вопрос, однако, возможно решение будет кому-то ещё полезно.

    Итак, чтобы получить два бандла, проще всего создать отдельную entry_point для каждого из них.

    В конфиге это будет выглядеть примерно следующим образом:

    const webpack = require('webpack');
    const constants = require('./constants');
    const path = require('path');
    
    const config = {
    entry: {
    	app: './entry.jsx',
    	// path, кстати, можно ещё и вот так использовать:
    	anotherEntryPoint: [path.resolve(constants.src_path, 'anotherEntryPoint', './entry_two.jsx')],
    },
    output: {
    	path: constants.dst_path,
    	filename: 'js/[name].js',
    },
    // Далее остальной конфиг...
    }

    Собственно, вот и всё.
    Ответ написан
    1 комментарий
  • Не отображается :before, в чем ошибка?

    Psychosynthesis
    @Psychosynthesis
    Fullstack developer and radio engineer
    Для тех, кто в дальнейшем будет искать ответ на подобный вопрос, дополню.

    Псевдоэлементы :before не добавляются к элементам типа input или img, которые не имеют своего содержимого. Решение - обернуть их в div и уже к ним применять эти псевдоэлементы.
    Ответ написан
    1 комментарий
  • Как управлять питанием и выводом информации на экран lcd 1602 через I2C?

    Psychosynthesis
    @Psychosynthesis
    Fullstack developer and radio engineer
    А зачем у тебя тут buttonValue и исключение дребезга, если оно нигде не используется?

    Алсо, если я ничего не перепутал, для этих дисплеев надо при каждом отключении питания отправлять lcd.init();

    И да, ещё момент - некоторые экземпляры таких дисплеев жрут почти 90 мА при включении подсветки, поэтому лучше вешать питание через полевик.
    Ответ написан
    4 комментария
  • Где можно посмотреть logs у webpack?

    Psychosynthesis
    @Psychosynthesis
    Fullstack developer and radio engineer
    Насколько я понял, он по дефолту только в консоль логи выводит.

    Нашёл вот такое вот решение:
    https://www.npmjs.com/package/webpack-build-log-plugin

    Ещё, если вебпак был запущен через npm run, можно попробовать глянуть логи NPM в папке проекта:
    .npm/_logs
    Ответ написан
    Комментировать
  • Как ускорить работу Ubuntu в VmWare?

    Psychosynthesis
    @Psychosynthesis
    Fullstack developer and radio engineer
    Я вообще достаточно долго пытался с VMware возиться, глюков там хватает, даже не считая производительности. Вообще для ускорения VMware советуют ставить vmware-tools, дескать там оптимизированные дрова и т.п.

    Там есть много вариантов установки, я лично не осилил ни один (везде были те или иные ошибки), в итоге вообще на VMware плюнул (надоело пробираться через баги как через лесные завалы), скачал Oracle VM VirtualBox вот отсюда:
    https://www.oracle.com/technetwork/server-storage/...

    Оттуда же скачал Extensions Pack - после его установки для гостевой системы становятся доступны USB2.0 и USB3.0 контроллеры. Стало чуть быстрее в целом, но кардинально ситуацию не исправило.

    Вообще VirtualBox весьма капризная дрянь - во первых если у вас ломаная винда (у меня была Win 7 x64), она работать отказывается, приходится восстанавливать системные файлы через консоль запуском sfc /scannow и отключать доступ к адресам, с которых винда обновляется - винда ругается, что "не прошла проверку подлинности", но работает. Если потом снова запустить активатор системы, VirtualBox снова не работает - при попытке запуска выдаёт невразумительные ошибки типа "can't create session" или в таком духе.
    Далее, если хост-машину погрузить в сон и потом выйти и попытаться запустить виртуалку, она тоже не запустится, причём вообще без ошибок, тупо виснет и всё. Впрочем, на фоне VMware это всё ещё туда-сюда.

    Короче, резюмируя, сугубо имхо VMware, как и VirtualBox - шляпа полная. Я сейчас думаю попробовать Parallels Workstation, по отзывам она быстрее заметно работает, хотя вроде бы уже не обновляется.
    Ответ написан
    1 комментарий
  • Бенчмарк для Linux (Debian/Ubuntu)?

    Psychosynthesis
    @Psychosynthesis
    Fullstack developer and radio engineer
    Не знаю, нашёл ли автор что хотел, но, для тех, кто зайдёт сюда через поиск, отмечу пару моментов, по ответам выше.

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

    Nbench - древний, чисто CPU'шный бенч. Сходу не нашёл gui-версии. Вики, к тому же пишет, что он строго однопоточный (хотя возможно есть модификации).

    Для себя я выбрал другой вариант:

    Hardinfo - гуевый сброщик информации о системе, в комплекте идёт несколько бенчей для разных подсистем.
    Ответ написан
    Комментировать
  • Как сделать блютуз колонку?

    Psychosynthesis
    @Psychosynthesis
    Fullstack developer and radio engineer
    Лучший вариант вот: https://market.yandex.ru/product--setevoi-audiople...

    Правда он по Wi-Fi работает и ему ещё софт на телефоне требуется. Можете по "chromecast" поискать на али, там полно клонов по смешной цене. Но вопрос с софтом открытый. И да, если решите брать хромкаст аудио, торопитесь - его вроде с производства сняли.

    А вообще, конкретно то что вам нужно, называется bluetooth transmitter. На том же Яндексе вариантов мильон: https://market.yandex.ru/search?text=bluetooth%20t...
    Ну или на али посмотрите по аналогичной фразе, там их ещё больше.
    Только сразу предупреждаю, по качеству звука все эти варианты - фигня полная. Хотите хороший звук - берите хромкаст.
    Ответ написан
    Комментировать
  • Как слелать "замороженный" футер, не перезагружающийся при переходах по страницам сайта?

    Psychosynthesis
    @Psychosynthesis
    Fullstack developer and radio engineer
    Самый банальный способ - действительно через iframe всё это сделать. Как по мне, не такой уж и плохой вариант, минусов там меньше чем плюсов.

    А вообще, можно было бы и правда сделать шаблон на чём-нибудь в духе AngularJS и просто подгружать новые данные, перерисовывая шаблон при необходимости.
    Ответ написан
    Комментировать
  • Какой бренд/модель проигрывателя винила выбрать?

    Psychosynthesis
    @Psychosynthesis
    Fullstack developer and radio engineer
    Ну, во первых. Если вы хотите именно качество, тогда смотрите в сторону раздельных проигрывателей для винила и CD.

    Также, очевидно, что для этого варианта понадобятся какие-нибудь активные колонки, либо (в идеальном случае) ресивер с парой пассивных колонок.

    Лучше купите какой-нибудь подержанный диджейский Technics. Или Denon, на худой конец. За указанную сумму время от времени можно найти на барахолке экземпляры. По качеству даже они будут абсолютно точно лучше любого бытового проигрывателя за эту же цену, даже если этот бытовой новый. С другой стороны, у диджейских есть свою нюансы - во первых, если использовать его с активными колонками, надо смотреть чтобы в нём был встроенный фонокорректор. Во вторых - у диджейских буэшных проигрывателей часто убиваются головки целиком или иглы. Для диджеев это расходный материал, поэтому если вам попался такой экземпляр, это мелочи, иглы можно купить самые дешёвые на замену, да и головку целиком там поменять не сложно в целом.

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

    Ну и да, всё вышеизложенное верно только если вы действительно хотите по настоящему качественный проигрыватель винила. Всё, что есть по вашей ссылке это настоящий хлам, однако, если вас устраивало, как звучало дедушкино радио размером с пачку сигарет, подключенное к радио-розетке - можете смело брать, полагаю качество вас устроит. А CD стационарный так вообще любой можно брать.
    Ответ написан
    Комментировать
  • Как настроить редирект 301?

    Psychosynthesis
    @Psychosynthesis
    Fullstack developer and radio engineer
    Имхо, лучше вообще плагинами для редиректа не пользоваться, а использовать редиректы сервера. Если у вас апач (чаще всего), то это редактирование .htaccess в корне сайта.

    Правила для редиректа уже сто раз описывались где только можно, приведу пример простых редиректов для переадресации с www-версии и c обязательным HTTPS:

    <IfModule mod_rewrite.c>
      RewriteEngine on
      
      RewriteCond %{HTTP_HOST} ^www\.ВАШДОМЕН\.ВАШАЗОНА$
      RewriteRule ^(.*)$ http://ВАШДОМЕН.ВАШАЗОНА/$1 [R=301,L]
      
      RewriteCond %{HTTPS} off
      RewriteCond %{HTTP:X-Forwarded-Proto} !https
      RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    </IfModule>


    Правила для подстановки /blog, полагаю, легко сами нагуглите. Хотя, 80 постов это не так и много, если что можно и руками написать, вот пример:

    <IfModule mod_rewrite.c>
      RewriteEngine on
    
      Redirect 301 /относительный/адрес/без/домена/СТРАНИЦА.php https://ДОМЕН.ЗОНА/абсолютный/адрес/новой/СТРАНИЦЫ.php
    
    </IfModule>


    Вообще возможны вариации, рекомендую вам изучить синтаксис mod_rewrite, наверняка пригодится, тем более вам ничего особо сложного не нужно.
    Ответ написан
    Комментировать