• Как исправить nullreferenceexception в свойстве?

    @DarkByte2015
    Ради бога не надо все лепить в одну строку. Это не добавляет читабельности. А проблема скорее всего как раз из-за этого!

    if (DataContext is null)
    DataContext = new FormulaViewModel()
    
    return DataContext;
    Ответ написан
  • Есть ли в PHP хеш из цифр?

    @DarkByte2015
    Ответ написан
    Комментировать
  • Какую БД использовать для wpf-приложения?

    @DarkByte2015
    Для локальных приложений обычно используют SQLite. Но если нужен доступ с нескольких ПК то нужен какой-то бэкэнд (сервер с любой СУБД). Если хочешь обойтись без сервера то можно закинуть файл SQLite базы в какое-то облако типа Google Drive и попробовать его синхронизировать по API (вроде-бы есть публичное).
    Ответ написан
  • C каких PHP фреймворков лучше начинать изучение?

    @DarkByte2015
    Я бы советовал начать с Yii2. Первая версия уже не так актуальна, хотя все еще есть старые проекты на ней. Но зная вторую версию несложно разобраться и с первой. Kohana хоть и стар, но я начинал с него - самый простой наверное из существующих фреймворков. Но да, работы по нему наверное уже немного осталось, а так он проще чем Yii. А Yii однозначно проще чем Laravel (в нем больше абстракций). Ну и уж Zend это вообще тяжеловес - с него не стоит начинать. Мой выбор - Yii2 за простоту и распространенность по России.
    Ответ написан
    Комментировать
  • C# variadic templates?

    @DarkByte2015
    Нет. В C# отсутствует возможность указания переменного количества типов, но можно просто указать переменное количество аргументов через params сделав их типа object (тогда можно будет любой тип передать) и через рефлексию с ними работать.

    P.S. Если посмотреть например на стандартный Func то он тоже сделан чисто на перегрузках (реализовано несколько вариантов этого класса для разного количества аргументов).
    Ответ написан
  • Как сделать защиту от несанкционированного редактирования?

    @DarkByte2015 Автор вопроса
    Решил так

    private function checkAccess($article_id) {
    	$article = Article::findOne($article_id);
    	$user = Yii::$app->user;
    
    	if ($article->user_id !== $user->id && !$user->can('editor'))
    		throw new ForbiddenHttpException("Вы не имеете доступа к этой статье!");
    }


    И в каждом экшэне его дергаю. Вспомнил что прокидывать article_id вовсе не обязательно, ведь почти у всех моделей есть прямой или косвенный доступ к нему. Даже у файлов можно получить дополнительном запросом по FK связи автора, а у него уже есть article_id. На этом варианте наверное и остановлюсь. Кажется ничего лучше придумать не удастся.
    Ответ написан
    Комментировать
  • Как сделать обработать результат action-а?

    @DarkByte2015 Автор вопроса
    Неактуально. Сделал без аяксов. Оказывается у вкладок был параметр url. Просто задал его и теперь при клике на вкладку перехожу на другую с полным рендером (может так и хуже, зато проще).
    Ответ написан
    Комментировать
  • Как вы пишете SQL в своих проектах?

    @DarkByte2015
    Строковая интерполяция? Не, не слышал. Это один вариант. Еще когда я работал над одним крупным энтерпрайз проектом на ASP.NET MVC мы хранили запросы в ресурсных файлах проекта. А дальше там Visual Studio же очень удобно сама генерирует класс в котором эти строки из ресурсника хранятся, дергаешь их String.Format(MyResourse.MyQuery, var1, var2). Т.е. как в первом варианте, но чтобы SQL в C# коде не хранить. Ну и наконец конечно всегда можно заюзать хранимки и орм.
    Ответ написан
    Комментировать
  • C#. Как удалить часть строки которая идет после последнего символа, например запятой?

    @DarkByte2015
    string aaa = "Привет, что делаешь";
    string bbb = aaa.Split(',').Last();
    Ответ написан
    Комментировать
  • Какую IDE для разработки вы используете?

    @DarkByte2015
    Попробуй neovim. Он есть и под виндовс. Под него идут те же плагины что под обычный вим - а это значит что можно слепить IDE под любой язык. Ну вещь конечно очень специфичная, особенно для виндоюзеров, но мало ли вдруг понравится. :D

    P.S. Зато он не тормозит. Это точно. Даже если ты его с утюга запустишь. :D

    * на правах троллинга *
    Ответ написан
  • Что из семейства линукс посоветуете для домашнего ноутбука?

    @DarkByte2015
    Забавно. У меня почти такой-же ноут. Маленький sony vaio (дюймов 11 кажется) - нравится за компактность и стиль (имхо). Изначально стояла винда, потом много чего перепробовал. Некоторые тяжелые системы (в частности и elementaryOS) жутко тормозят. Дольше всего сидел на минте. Собственно на текущий момент это мой выбор на всех линуксовых систем (а перебрал я немало, даже на арчеподобных сидел). Очень его советую. Причем вместе с Cinnamon - его дефолтной оболочкой. Она очень красивая и легкая. Не тормозит вообще. Летает не хуже XFCE.
    Ответ написан
    Комментировать
  • Как получить нормальный словарь из QueryDict?

    @DarkByte2015 Автор вопроса
    Уже не актуально - разобрался. Проблема была во фронте (данные уходили не в json, а в form-urlencoded).
    Ответ написан
    Комментировать
  • Почему возникает ошибка при сохранении?

    @DarkByte2015 Автор вопроса
    После того как я сделал в DAO это
    model.subModel = em.getReference(MySubModel.class, model.subModel.id)

    проблема наконец решилась и все добавилось!
    Ответ написан
    Комментировать
  • Stream foreach-range-loop?

    @DarkByte2015 Автор вопроса
    Кажется понял... Метод iterator есть, но от Iterable не отнаследовано. Короче стримы в java сделаны через жопу. Как и все остальное впрочем...
    Ответ написан
    Комментировать
  • Почему выдает ошибку компиляции?

    @DarkByte2015 Автор вопроса
    Короче сделал вот так:
    public void write() throws IOException {
    	List<String> columnTitles = settings.columns.stream().map(x -> x.title).collect(Collectors.toList());
    	String splitter = String.join("", Collections.nCopies(settings.page.width, "-"));
    	List<String> headLines = columnsToRows(columnTitles);
    
    	try (BufferedWriter writer = Files.newBufferedWriter(outputPath, DEFAULT_CHARSET)) {
    	    Stream<String> lines = inputData.stream().flatMap(x -> columnsToRows(x).stream().limit(columnTitles.size()));
    	    Iterator<String> iterator = lines.iterator();
    
    	    while (iterator.hasNext()) {
    		String line = iterator.next();
    		writer.write(line);
    	    }
    	}
    }
    Ответ написан
    Комментировать
  • Почему не выводится список?

    @DarkByte2015 Автор вопроса
    Оказывается надо было еще переопределить метод getCount. Я не знал.
    Ответ написан
    Комментировать
  • Как вы охарактеризуете фреймворк CackePHP?

    @DarkByte2015
    Тут уже вообще-то сказали: Laravel / Symfony / Yii - самые топовые фреймворки. Про CakePHP ничего не знаю. Но советую также учить и CMS-ки (ворпресс, джумла, друпал, опенкарт...), но только не в качестве первого фреймворка, а уже потом. Т.к. они очень популярны и востребованы на рынке. Но честно скажу учить их - просто ад. Несмотря на то что они позиционируются как CMS - т.е. для людей не понимающих в программировании, на деле их учить намного сложнее чем классические MVC фреймворки. Во первых очень не понятная структура проекта, в отличии от MVC где модели/вьюхи/контроллеры, во вторых админка - мне проще в конфиге в PHP нужный параметр поменять чем запоминать кучу менюшек.

    P.S. А я вообще начинал с Kohana и кстати до сих пор считаю его самым простым MVC фреймворком. Хотя по слухам он вроде как уже скончался, но некоторые старые проекты на нем бывают...
    Ответ написан
  • Какой менеджер паролей выбрать?

    @DarkByte2015
    Я юзаю Enpass. Очень удобный. Полностью бесплатный для десктопа и за версию для мобильного придется разово заплатить что-то около 700 рублей, но можно потестить и так - ограничение в 20 логинов. Рекламы никакой. Синхронизация через облако, но не как в KeePass где надо самому сохранять файл в папку облака, да еще и отдельной программой (от облака) его синхронизировать, а тут оно само умеет синхронизировать все с большинством облаков - достаточно лишь залогиниться. Причем оно запрашивает доступ лишь к этому файлу в облаке, что как-бы гарантирует что оно не будет смотреть что там еще хранится.

    Долго сидел на KeePass, но достала убогость интерфейса. Как из 2000х... К тому же когда понадобилось синхронизировать со смартфоном оказалось что у него хоть и есть несколько версий под андроид, но они вроде не официальные и интерфейс просто чудовищный. Посидел какое-то время на одной такой и решил все таки искать что-то более современное. Пробовал еще LastPass - но мне не нравится что он хранит данные на своих серверах, которые кстати по слухам были скомпромитированы около года назад (их взломали и похитили пароли). Так что в облаке как-то надежнее (никто ведь не знает что там пароли хранятся, и никто не будет взламывать миллиарды аккаунтов в поисках БД с паролями).

    P.S. Есть еще один интересный, полностью бесплатный и довольно современный вариант - bitwarden. Пробовал его недавно, но он очень молодой и пока сыроват. Например у расширения для хрома на редкость неудобный интерфейс (хотя и выглядит современно), а десктопного приложения кажется нет вообще. Жду пока допилят, а там может быть и перейду...
    Ответ написан
    1 комментарий