• Как сделать систему безопасности виртуальных машин?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    Хорошо, а если я под виртуалкой буду запускать net/freebsd, windows, dos, os/2 прости господи? Увы и ах, контролировать виртуалку можно только косвенными путями, если у нас нет полного представления что гость назапускал:
    - по файловой системе и/или дисковому обмену, да и то, если гость не использует криптографию на диске;
    - сетевому трафику, и опять же, если гость его не шифрует, или там tor не запускает.
    - конечно же можно с помощью vd-x и vd-t смотреть содержимое регистров и памяти, отлавливать всякое I/O.
    Но это же все начинает напоминать игру в ревресинжиниринг кода с получением ключей доступа к какому нибудь платному приложению. Вроде бы приложение и запущено у нас в системе, только ключей требует для совего запуска. Вроде бы как и наш компухтер, а не мы хозяева-то приложения. И дебагеры вроде как можем запускать и менять регистры всякие, только хрен там...
    Что-то не нравится мне такая тема диплома...
    PS. Я вот тут намедни запускал Windows NT4.0 SP3 в виртуалке. Запустилось, грустное это занятие, скажу я вам... Драйверов нет, проброс старых PCI-плат - ужас. Новые не работают, драйверов нет, да и ПО их не поддерживает. Сама NT еще та девочка с косичками из фильмов Хичкока...
    Ответ написан
    Комментировать
  • Статистика для сайта, Кеш?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Redis вам в помощь! https://redislabs.com/ebook/redis-in-action/part-2...
    Еще хочу посоветовать посмотреть в сторону influxdb, в качестве хранения ваших коунтеров, отображать можно через grafana.
    Ответ написан
    Комментировать
  • REST или Json-RPC для большого проекта?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    REST предпочтительнее, на мой взгляд, так как меньше жрет ресурсов, легче отлаживать, проще использовать. Ну а данные конечно же гоняйте в json.
    Ответ написан
  • Чем отличается JDBC от ORM?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    JDBC- интерфейс для sql-запросов. Работаете с голыми sql-запросами и оперируете таблицами, строками, колонками и значениями. Если результаты запроса нужно положить с объекты, то сами их туда распихиваете.
    ORM - интерфейс для мапинга классов на таблицы, строки, колонки и значения базы данных. Работаете с java-объектами, sql-запросы за вас формирует ORM. Другими словами, не задумываетесь (почти), каксоставить sql-запрос, вытащить из него данные и раскидать значения по своим классам.
    Предпочтительнее конечно работать с ORM, так как все за вас будет оптимизировано и закешировано. Конечно, нужно будет знать, не только как работает ваша база данных, но и как работает ваш ORM.
    Ответ написан
    Комментировать
  • Linux какой выбрать для слабого ПК?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    6 комментариев
  • Как привязать домен к сайту, запущенному на выделенном сервере при помощи uWSGI?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    Фронтэндос ставите nginx
    https://www.digitalocean.com/community/tutorials/h...
    Ответ написан
    Комментировать
  • Как этот код отрабатывает?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    У вас каждый класс, который мапится на базу данны, настедуется от db.Model.
    SQLAlchemy просто выбирает все наследуемые классы, находит все атрибуты этих классов и создает sql.
    В каждом классе есть магический список наследников -MyClass.__subclasses__(), Так эта "магия" и работает. - stackoverflow.com/questions/3862310/how-can-i-find...
    Ответ написан
    1 комментарий
  • Как построить меню в java/jsp?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Как построить меню уже разобрались, как вижу. Если не разобрались, советую следующий подход, выбираете все записи всех меню сразу одним запросом, программно парсите их и создаете дерево меню в hashtable или xml.dom (я не шучу!, здесь xpath рулит).
    Далее, объект меню сохраняете в servlet context или application context.
    И больше в базу данных не лезете, до тех пор, пока меню не поменяется. Если меню изменилось, то перегенерируете его еще раз. Даже если меню у вас будет из 65000 пунктов, что навряд ли, то это много памяти не займет в любом случае.
    Ответ написан
  • Какое ПО посоветуете?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    Простите за ненавязчивую рекламу. Этот класс ПО характеризуется емким словом Digital Signage. Есть куча готовых приставок и терминалов, где изобретать уже ничего не нужно. Можно выводить и видео и картинки и очередь через web-браузер и еще кучу всего. Если интересно, пишите, почта в профиле. Проконсультируем, продадим, реализуем под ключ, допишем, если что необходимо.
    Ну и в гугле/яндексе по запросу ищется куча ПО (и оборудования) по digital signage.
    Что касается конференций, вам нужно будет ставить видеосервер, например nginx с модулем rtmp, в него публикуете видеопоток, а браузеры или плееры на местах его показывают. Естественно, есть всяко разные нюансы.
    PS. Ах, да, если есть машины с виндой, то можно просто поставить ПО. Можно и под линуксом, и на андроиде, вариантов масса.
    Ответ написан
    Комментировать
  • Какую документную бд выбрать?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Смотря что с чем кушать. Можно и elasticsearch в качестве nosql хранилища использовать, как я делаю. Мы же, я надеюсь, подбираем не просто абстрактного коня в вакуме, а нечто, что поможет решить нам задачу.
    Вот с описания задачи в вопросе я бы и начал.
    Как пример:
    - нужно много искать по разным критериям, типа товаров в магазине, желательно с языковым поиском, документы небольшие и не ветвистые - elasticsearch
    - нужно искать непонятно что в развесистых документах, языковой и полнотекстовый поиск не сильно нужен, но нужно вычислять поля в зависимости от поиска - mongodb, как пример база расписаний поездов и их движения по направлениям.
    -нужно искать связанную информацию типа связей между людьми, типа семи рукопожатий - node4j например.
    Ну и так далее, для каждой затычки есть хитрый штопор.
    Ответ написан
    Комментировать
  • Аутентификация в Flask python?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Если используете flask-login (flask-security кажется это делает автоматом), то есть настройка session.permanent = True
    Ее нужно использовать в app.before_request
    Ну и в юсера можете добавить признак, запоминать ли его на сайте.
    У меня так:
    @app.before_request
    def make_session_permanent():
            g.user = current_user
            if g.user.store_me:
                   session.permanent = True
    Ответ написан
    Комментировать
  • Цикл while медленнее for in?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Пустые циклы обычно не гоняют. Так что без разницы. А если нужны пустые циклы и скорость, то лучше взять Java/C/C++/C#. И делать на них молотилки.
    Ответ написан
    3 комментария
  • Как снять блокировку по SSH?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Сменить хостера! Это если меня так каждый раз блокировать будут - да ну его....
    Ответ написан
    4 комментария
  • Как изменить кодировку на Mac OS?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Как ни странно, посоветую jEdit.org
    Да, это редактор, написанный на яве, но именно для этих целей, и не только, его использовать одно удовольствие. Я, например, люблю в нем xml править.
    aa19aafbf9e34adcb0369c3c5fade8a7.png
    Ответ написан
    1 комментарий
  • Как управлять запущенной JAVA программой из консоли?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    Ответов несколько, и все они не понравятся.
    1) Никак! В смысле нельзя без перезупуска любой программы дополнительно передать в нее параметры! И не вахно, ява или что-то другое.
    2) Можно, но нужно например реализовать интерфейс JMX, повесить в своей java-программе jmx-бины и управлять своей программой налету.
    3) Реализовать в своей java-программе простенький web-сервис и через него управлять программой не только с консоли, а из любой точки мира.
    4) Написать свой протокол взаимодействия и сделать собственного клиента.
    5) Технически можно подцепиться на сигнал SIGHUP и перечитывать когфиги, как это делает большинство демонов unix.
    Ответ написан
  • Как добавить недостающие элементы в массив?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Например вот так. Не оптимизировал :-)
    package my.com;
    
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Comparator;
    import java.util.List;
    import java.util.Set;
    import java.util.TreeSet;
    
    public class Paths {
    	public static void main(String[] args) {
    		String str = "A1, A1\\BB1\\CCC1, A2\\BB1, A2\\BB1\\CCC1";
    		ArrayList<String> paths = new ArrayList<String>(Arrays.asList(str.split(",")));
    
    		System.out.println("======  Беган =======");
    		System.out.println("Было");
    		for(String i:paths){
    			System.out.println(i);
    		}
    		
    		Set<String> out = new TreeSet<String>(new Comparator<String>() {
    
    			@Override
    			public int compare(String o1, String o2) {
    				return o2.compareTo(o1);
    			}
    			
    		});
    		for(String i : paths) {
    			ArrayList<String> path = new ArrayList<String>(Arrays.asList(i.trim().split("\\\\")));
    	
    			for(int j = 1; j <= path.size(); j++) {
    				List<String> s = path.subList(0, j);
    				out.add(String.join("\\",s));
    			}
    		}
    
    		System.out.println("=================");
    		System.out.println("Сортировка туда");
    		for(String i:out) {
    			System.out.println(i);
    		}
    
    		System.out.println("=================");
    		System.out.println("Сортировка обратно");
    		Set<String> out1 = new TreeSet<String>();
    		out1.addAll(out);
    		for(String i:out1) {
    			System.out.println(i);
    		}
    		System.out.println("======= Доне ======");
    		
    	}
    }

    ======  Беган =======
    Было
    A1
     A1\BB1\CCC1
     A2\BB1
     A2\BB1\CCC1
    =================
    Сортировка туда
    A2\BB1\CCC1
    A2\BB1
    A2
    A1\BB1\CCC1
    A1\BB1
    A1
    =================
    Сортировка обратно
    A1
    A1\BB1
    A1\BB1\CCC1
    A2
    A2\BB1
    A2\BB1\CCC1
    ======= Доне ======
    Ответ написан
  • Какую структуру данных выбрать для хранения данных в памяти?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    А зачем непосредственно в приложении это делать? Возьмите, к примеру, redis.io, в нем и храните. Там не только sortedset, но и hash и и сounters и еще кучу всего реализовано. Работает быстро, лежит в памяти, кластеризуется и шардируется.

    В вашем случае удобней было бы держать ваши атрибуты в sortedset, где имя коллекции = атрибут, а значениями - id пользователей.
    Ответ написан
    Комментировать
  • Почему стандартный zip архиватор не открывает архив, созданный в linux?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    Все просто, в линуксе используется потоково-блочное сжатие, а у вас программа пытается открыть контейнер zip с файлами!
    Ответ написан
  • Где хранят вызовы функций нормальные люди?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Товарищ VoidVolker очень правильно все расписал.

    В просторечье это выглядит, у меня, так:
    - пишем код,
    - видим, что часть кода повторяется
    - выносим повторяющийся код в функции
    - этих функций становится много
    - выносим эти функции в модуль
    Тоже самое делаем и с классами.
    Про декомпозицию - логические куски кода раскладываем по разным деревьям-модулям.
    Ответ написан
    Комментировать
  • Как подключиться к удаленному серверу через SSH2?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Ssh2 - это не программа, а версия протокола ssh. И как и странно, стандартный ssh в osx его умеет, причем умеет по умолчанию. Ну, и если вас беспокоит, не подключился ли ssh по протоколу v1, то из командной строки можно принудитедьно указать версию протокола опцией -2 (и не только)! Ну и как минимум опция -v даст логи по ткущему подключению, алгоритму обмена ключами и типу шифрования.
    ssh -2 -v cooluser@superhost.my
    Ответ написан
    4 комментария