Задать вопрос
  • Как правильно использовать индексы PostgreSQL?

    phoinixrw
    @phoinixrw
    Архитектор информационных систем
    1. Для того что бы понять, работает индек или нет, а так же как он вообще работает в консоле базы данных следует выполнить EXPLAIN ANALYZE, в Вашем случае:
    EXPLAIN ANALYZE SELECT * FROM b WHERE a_id='123' ORDER BY time DESC;

    2. Скорее всего в Вашем случае скорость запроса зависит не сколько от работы индекса, сколько от количества записей возвращаемых запросом для разных a_id. Почему нет LIMIT ?
    Ответ написан
    7 комментариев
  • В go нету встроенного reverse метода для массива?

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

    Поясняю, го это строго статически типизированный язык, в отличие от джаваскрипта, который является динамически типизированным. Поэтому чтобы сделать такую функцию, пришлось бы писать ее реализацию для всех возможных типов, а это невозможно. Да, можно покрыть все типы стандартной библиотеки, но это не покроет типы, которые сам пользователь может создать.
    Поэтому будет такая штука как дженерики (обобщения), это когда можешь написать функцию, которая работает со слайсом любого типа. И ей важно будет только то, что это слайс, она сможет переместить там элементы, не заглядывая в их тип.
    Ответ написан
    2 комментария
  • Где взять хорошие знания про CakePHP?

    New_Horizons
    @New_Horizons
    Бред:
    банально, но документация
    Ответ написан
    Комментировать
  • Что значат эти обозначения в ER диаграмме?

    @kalapanga
    Обозначения легко найти, например: https://www.lucidchart.com/pages/ru/erd-%D0%B4%D0%...
    Ответ написан
    Комментировать
  • Что принципиально отличает Symfony 5 от Laravel 8?

    @galliard
    1. IDE понимает Symfony без дополнительных плагинов, на Laravel без плагинов писать не удобно.
    2. Вам придется повсеместно использовать внедрение зависимостей через конструктор. Вы это и в Laravel могли делать, но там и другие варианты были (фасады, app('service_name')). В Symfony только DI и только через конструктор.
    3. В Symfony вам придется пробрасывать данные к месту использования через аргументы. В Laravel вы могли достучаться до любого компонента при помощи статических фасадов и функций, вызвав их в любом произвольном месте, например могли вызвать request() где-то в модельке. В Symfony нужно будет пробросить данные запроса из контроллера через аргументы по всему стеку вызовов.
    4. В Symfony вы перестанете наследовать свои классы от классов Symfony (за рядом исключений).
    5. Конфиги вы будите писать в yaml (в этом есть плюсы и минусы)
    6. В Symfony нет middleware (возможно есть какие-то сторонние пакеты, которые их реализуют, но обычно такой подход при разработки на Symfony не применяется)
    7. В Symfony вы перестанtте манипулировать айдишниками и начнете манипулировать сущностями. То есть код $order->user_id = $user->id; превратится в $order->setUser($user);
    8. Больше не надо писать миграции вручную, доктрина автоматически их сгенерирует.

    Ну это то, что вспомнил, так то отличий может и больше будет.
    Ответ написан
    1 комментарий
  • В чем сложность поддержки проектов на Go?

    EvgenyMamonov
    @EvgenyMamonov Куратор тега Go
    Senior software developer, system architect
    Более четырёх лет пишу на Go, лично для меня поддерживать проекты на других языках сложнее ))
    До Go много лет писал на Perl/PHP/Python/Java/C/Ruby on rails/JavaScript и "крутил" еще не мало чего.
    Сейчас пишу только на Go и Python.

    Основная сложность в Go - это то, что если вы начинаете писать "криво" - то писать так очень трудно :))
    Подход к реализации в Go достаточно непривычный для тех, кто приходит из скриптовых языков.
    Например запрет циклических импортов - это самое первое, что "взрывает" мозг :)
    Нужно время чтобы адаптироваться после скриптовых языков.

    Про обработку ошибок - это да, это, пожалуй, единственное что мне не нравится в Go.
    Для себя я решил эту проблему за 1-2 часа :) и больше меня это не беспокоит.

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

    А если объективно - то я бы не стал говорить о сложности поддержки проекта применимо к какому то конкретному языку.

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

    А когда в таком проекте нужно что-то доработать или исправить ошибку, то почти всегда очень не просто найти то место, где нужно править, и после правок в одном месте, как правило, что-то ломается в другом :)

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

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

    Хочется добавить, что как бы не писали про Go, что он простой и т.д. - он явно сложнее Python/PHP и т.д.
    Это еще один повод сказать, что поддерживать код на Go сложно ))

    Также стоит учитывать, что проекты которые пишут на Go зачастую сложнее, чем проекты для которых выберут скриптовый язык. Go выбирают когда планируются большие нагрузки, параллельная обработка чего-либо и т.д., а это, в свою очередь, дополнительно усложняет проект.
    Ответ написан
    7 комментариев
  • Стоит ли уволняться для поиска работы java разработчиком?

    saboteur_kiev
    @saboteur_kiev Куратор тега Карьера в IT
    software engineer
    Все адекватные работодатели:

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

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

    3. Успешное прохождение интервью это еще не означает хороший оффер. Вам может не понравиться компания, не понравятся условия или ЗП или начальник с которым вы собеседуетесь. Не нужно думать что если пошел на собеседование то это точка невозврата. Точка невозврата это даже не подтверждение оффера. Даже увольнение еще можно откатить в некоторых случаях. Нет смысла волноваться по таким поводам.

    4. Многие ходят на собеседование даже не предполагая менять работу. Кто-то из спортивного интереса, кто-то на всякий случай посмотреть, а вдруг предложат работу мечты. В таких случаях всегда бывает, что сотрудника нужно ждать и месяц и два. Но такие варианты, конечно, встречаются в основном на уровне mid/senior и выше.
    Ответ написан
    Комментировать
  • Цель - WEB Full-stack. Сносный ли план обучения для новичка?

    @bestann
    Я училась хорошо, но из знаний тебе действительно понадобится математика (развитое логическое мышление) + английский, это отмечено правильно. В остальном много лишнего и уводящего не в ту степь. Работала в телефонии, но тоже пришлось перейти в DevOps, т.к. нет перспектив. В итоге по жизни приходилось учить кучу всего НЕНУЖНОГО (например разные телефонные станции, на что ушло много времени). Если бы сразу удалось на Linux устроиться, не потеряла бы 15 лет. Поэтому пишу тебе о том,что действительно понадобится. Не трать время не ненужное, и так учить надо ОЧЕНЬ МНОГО. Нужен широкий кругозор.

    Установи дома операционную систему Pop!_OS (на основе Ubuntu) и привыкай работать в Linux. Поставь там qemu, kvm, git, ansible, docker, docker-compose. Тебе будет достаточно виртуальных машин для изучения материала. Ansible на самой машине как контрольная управляющая нода, а настраивать им виртуалки.

    Поставь VSCode Insiders Edition. В нем хорошо работать с кодом. Там плагинов много. И для редактирования yml файлов Ansible, Kubernetes), для Dockerfile, и для программирования потом пригодится.

    Поставь Obsidian. И пиши всю документацию там, собирай там все свои знания! Приучай себя делать конспекты и переводы. Формат написания - Markdown, как раз тот, в котором программисты README.md пишут. https://obsidian.md/ (ставится на разные ОС)

    Чтобы не учить лишнее, пишу, что учить:
    Хорошо знать Linux - Уильям Шоттс - Ок, найди книгу RHCSA8 Sander van Vugt (даже на русском есть,думаю, умеешь искать), подготовься и сдай экзамен RHCSA, дает хорошую базу по Linux. Также есть его видеокурсы, я по ним готовилась. (тоже достанешь). Второй хороший автор Andrew Mallet. Практикуйся на виртуалках CentOS8 (у них проблема с поддержкой с нг, но можешь и нестабильный релиз использовать,тебе же не в продакшн). За рубежом сейчас альтернатива — Rocky Linux. На виртуалках посмотришь как работать с менеджером пакетов yum/dnf, на Pop!_OS - c apt.
    На русском по Linux курсы Кирилла Семаева на Youtube.

    Ansible — управление конфигурациями. Подготовка к экзамену RHCE8 (он после RHCSA), те же авторы (книги есть). У Andrew Mallet досконально разбирается Ansible, можно одновременно с Linux учить,потому что он там и линуксовые команды grep и прочие использует для анализа файлов конфигурации. Очень хороша родная документация на сайте Ansible. Также качай примеры ролей на Ansible Galaxy.
    На русском курсы Астахова на Youtube.

    Git — тут что найдешь. Он есть в составе Kubernetes База от Слерм, материалов достаточно. Цикл статей почитай тут https://css-tricks.com/creating-the-perfect-commit..., 7 и 8 часть скоро выложат. Но для начала поищи видеокурсы на русском (все есть). Надо видео посмотреть, чтоб нагляднее было, потому что сначала непонятно как это ты работаешь вроде в одной папке, но можешь находиться в разных ветках.

    Gitlab — Как вариант завести аккаунт на Gitlab.com и там пробовать. И смотри файлы .giltab-ci.yml и сопутствующие включаемые файлы через include самого Gitlab. Узнай как включать переменные, якоря, extends, needs, правила rules, needs (кстати сейчас можно без stage только через needs), разницу между кэшами и артефактами.
    Jenkins, teamcity используется, но Gitlab у нас чаще... Учи то что чаще используется. Ты не сможешь все инструменты освоить физически. Как устроишься, будешь осваивать имеющееся на работе.

    Docker — так же можешь изучить дома. Курсов хватает. Также попробуй в docker-compose запустить несколько контейнеров.

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

    Попробуй установить Nginx + php-fpm + mysql (или MariaDB) - например, чтоб заработала википедия простая BookStack. Локально пропиши имя сайта и проверь как работает, бэкапь базу, потом все удали и восстанови. https://www.bookstackapp.com/

    Kubernetes — сложно без базы указанной выше, но можешь подписаться на youtube канал Слерма,у них же есть периодически бесплатные курсы с возможностью практики. Дома можно только minikube, если ресурсов мало. Это факультативно, даже первые 4 пункта.

    По языкам программирования. Хотя бы освой bash в Linux. Python или Go — можно намного позже, это уже для программистов.Для тебя это будет плюсом.но в довесок. Иначе ты до профессии девопса будешь долго идти, а вернее до пенсии)) Сейчас спрос очень большой!!!

    Итак, резюмируя: Linux (+bash), Ansible, Docker, git —must have, Gitlab, SQL - желательно. Сети — очень зависит от работы. Главное, понимать что такое ip-адреса, dns, маска, шлюз, понимать как настраивать файрвол и сетевые интерфейсы в Linux, понимать что включить (какой параметр), чтобы Linux начал маршрутизировать трафик.
    Kubernetes, Terraform — это уже уровнем выше.

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

    Тут расти и расти до бесконечности.

    Извини за нескромный вопрос: почему ты в 22 года только на 1 курсе колледжа заочно? Это даже не вуз.
    И что за краткий курс школьной математики? Ты в школе не учился что ли?
    DevOps — это непросто, поэтому надо хорошо понимать, какая у тебя база, потянешь ли ты.

    UDP. Только увидела.
    Если цель не DevOps, а web fullstack, то может твой план подойдет больше. Но тоже надо иметь ввиду, что FullStack — это много. Иди сначала фронтенд-разработчиком. Если хочешь учит востребованное, то JavaScript, для фронденда фреймфорк vue.js или react. Если хочешь быть бэком, надо уже хорошо знать базы данных помимо самого языка программирования. Из популярных так же JavaScript (node.js). Python и Go так же популярны. И если уж учить, то Go, а не C#.
    Ответ написан
    7 комментариев
  • Как раньше люди программировали?

    1. Статьи в журналах.
    2. Книги (помню как каждый день ходил в книжный магазин, чтобы не пропустить новых книг по ИТ тематике)
    3. Официальная документация. С некоторыми компьютерами поставлялась документация по ЯП. Обычно Basic, но иногда и по ассемблеру
    4. Встроенная помощь в IDE. Например у Turbo Pascal была не плохая справка по Pascal.
    MS вообще расспростроняла MSDN (крутая база знаний ро их ЯП и средам) на дисках (ценный был артифакт)
    Ответ написан
    Комментировать
  • Не могли бы вы разъяснить всю эту "кашу" фреймворков экосистемы .NET на 2021 год?

    .NET

    Это общее название всей экосистемы + название .net core после 5 версии.
    .NET Core

    Это название кроссплатформенного рантайма.
    ASP NET Core

    Фреймворк для разработки веб-приложений под .net core / .net 5+
    ASP NET Core 5

    Конкретно пятая версия этого фреймворка
    ASP NET Core 5 MVC

    То же самое + реализация паттерна MVC с использованием razor pages.
    Что к чему? Что самое свежее/актуальное сейчас?

    Самое свежее - .net 5, asp net core 5, asp net core 5 mvc
    Через месяц уже 6 версия выйдет.
    Ответ написан
    Комментировать
  • Как удалить данные за период и проверить на целостность?

    ScriptKiddo
    @ScriptKiddo
    Какими командами сделать трункейт данных и оставить данные за последний год?

    Если есть партиции - удаляете партиции

    https://docs.microsoft.com/ru-ru/sql/t-sql/stateme...

    TRUNCATE TABLE PartitionTable1   
    WITH (PARTITIONS (2, 4, 6 TO 8));  
    GO

    Если партиций нет и данных мало - удалить просто

    DELETE FROM table WHERE date <= %date%

    Если данных много - сделать задачу в SQL Agent. Количество удаляемых строк оставляете на свое усмотрение

    DELETE TOP (1000) FROM table WHERE date <= %date%

    Какими командами проверить на целостьность и оптимизировать?


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

    Если нужно проверить, не битая ли база - то используйте команду DBCC CHECKDB
    https://docs.microsoft.com/ru-ru/sql/t-sql/databas...

    P.S Не помешали бы бекапы и прочее прочее
    Ответ написан
    Комментировать
  • Где и как лучше начать изучать Python?

    @anerev
    https://qna.habr.com Хороший сайт, если в поиск скопировать заголовок вопроса вашего то парочку ответов будет
    Ответ написан
    Комментировать
  • Можно ли как-то ограничить количество одновременных сессий для пользователя в Symfony 5?

    myks92
    @myks92
    Нашёл решение — пометь вопрос ответом!
    Мне кажется, что тут не совсем вопрос про симфони, но тем не менее отвечу.

    Храните каждый сеанс пользователя в базе. Данные храните такие как ID пользователя, IP, user agent, тайм зону и т д. А в приложении проверяйте, если в пользователь зашёл с другого устройства (браузера), то говорите ему о том, что нужно завершить прошлый сеанс или этот сеанс будет автоматически удалён через 5 минут, если пользователь не будет продолжать этот сеанс.

    Думаю, что это самое простое решение.
    Ответ написан
    Комментировать
  • Где искать работу Junior'ом?

    @AndromedaStar
    .Net - monkey
    Добрый день, вот у вас же есть гитхаб с хорошими проектами? Если есть, то не вижу никаких препятствий, чтобы начать искать работу по всей России, или отправлять свой гитхаб всем HR из вашего региона.
    Вот вы ищете работу, здесь тоже сидят вполне себе люди, которые в поиске работников, но вы себя никак не рекламируете. С таким навыком поиска работы будет очень сложно куда-либо попасть.
    Ответ написан
    6 комментариев
  • Как правильно реализовать FullRestApi на yii2?

    @Mylistryx
    Наверное правильней на уровне роутов.
    'GET some' => '/site/index',
    'PUT some' => '/site/create',
    'POST some' => '/site/update'
    ....
    Ответ написан
    Комментировать
  • Как справиться с проблемами на некоторых моделях телефонов?

    alexgp13
    @alexgp13
    Руководитель ИТ-проектов
    К сожалению, Андроид такая штука, что на каждом телефоне есть свои крайне специфичные глюки. Например, одно из моих приложений упорно вылетает на Honor/Huawei, причем не всегда и не на всех. Но на Xiaomi, Samsung, Sony, LG, BQ, Highscreen и прочих работает стабильно. Решение пока так и не нашел, учитывая, что у меня самого Honor/Huawei нет, а используемые библиотеки более чем стандартны - из чистого Андроида, даже не GMS.

    По вопросам:
    1. Единственный вариант из-за большого зоопарка, и то не факт что на конкретной версии прошивки в конкретной стране не будет глюков.
    2. Тестируют долго и упорно, на всех устройствах, плюс анализ логов при сбоях на релизных версиях.
    3. Компоненты то есть, наверное, только это не гарантия, что в новой прошивке производитель ничего не сломает.
    4. Старайтесь максимально детально отрабатывать любые потенциальные ошибки, даже через банальное try-catch
    5. Не нужно, со временем нужный навык прокачается, а если просто так зубрить, то оно все равно без применения быстро забудется. Но это не значит что читать для себя интересные статьи про типичные ошибки не нужно.
    Ответ написан
    Комментировать
  • В 40 лет планирую поменять сферу деятельности с 1С на Android? Сколько на старте смогу зарабатывать?

    @ScyTer
    18 лет в 1С для программирования на почти любой другой технологии - почти нулевой опыт, разве что алгоритмика развита должны быть хорошо, возможно, архитектура, но вряд ли это можно перенести мобильную платформу. Навыков ООП нет. В общем, опыт крайне не релевантный.

    По Андройду советую строго Kotlin,: на Java будешь писать на старых (с точки зрения Андройда) технологиях, то есть тоже не релевантный опыт. Если планы на иос есть, то можно думать о Flutter сразу.

    Карта: открывай любые курсы, бери там список тем и на каждую уделяй часа 3 на теорию, потом часа 3 на практику. Но, вообще, вопрос странный для айтишника с 10+ стажем.

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

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

    Возраст - не проблема. Зп никто выше 1к$ точно сразу не даст. Но за год-полтора, при целеустремлённости и нормальной конторе (что первое бывает не всегда) можно до 2к$ подняться.
    Ответ написан
    1 комментарий
  • Какую конфигурацию выделенного сервера выбрать для Autocad?

    avc
    @avc
    Инженер и программист
    Видеокарты Автокад почти не использует. Только для отображения в визуальных стилях с затенением, но ими мало кто пользуется и при этом софтовая прорисовка (при выключеном 3d-ускорении) стабильней и быстрее (но выглядит страшненько). Встроенного видео достаточно.
    Многоядерность вообще не используется - Автокад чисто однопоточный (кроме рендера, который вообще никто не использует). Так что требуется максимальная производительность одного ядра, быстрый системный диск, большой дисковый кэш (многие команды идут через сохранение файлов).
    А вот причем тут сервер - я тоже не понял. Я в принципе на серверных материнках Автокадом пользуюсь: Xeon E3-1270v3. Просто такие у меня десктопы. Проблем нет.
    Ответ написан
    Комментировать
  • Какая самая перспективная и востребованная отрасль в С#?

    @spaceatmoon
    Вначале писал как ответ на ваш вопрос про разные языки и решил отдельным ответом сделать.


    Со своей стороны скажу php, он очень востребован. Простой язык, половина возможностей носят рекомендательный характер и сильно зависит от команды, в частности от их силы в программирование. Мне попадались хорошие ребята, а попадали очень не очень, но всё конечно же зависит от ваших навыков.

    Минус PHP в отсутствии однородности экосистемы. В РФ есть 3 главных фреймворка Symfony, Laravel, Yii2 и дальше 0.5% другие. Каждый из них тянет лямку на себя и составляют долю по грубому 33%. Каждый фреймворк богат на возможности, решают одну и туже проблему, но это всё равно что react/vue/angular. Свои подходы, методы и быть профессионалом в каждом нельзя. Соответственно список вакансий уже не такой большой как кажется, ведь потом явно появится какое-то предпочтение. Например у меня в blacklist однозначно стоит Yii2.

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

    Ещё можно рассмотреть Python/Django.

    В любом случае стоит ориентироваться на удалённую работу если вы не в СПБ и Москве. Лично в моём мухосранске какую технологию не выбери, максимум 1-3 контора нормальная. Остальные что-то мутят или в подвале сидят.

    Выбирай по зову сердца, иначе тошнить уже будет на 2 неделю. Я сейчас изучаю C# в частности asp.net, wpf. Даже по этим направлениям информации выше крыши.
    Ответ написан
    Комментировать