LINUX.ORG.RU

Сообщения aarexer

 

Вычисление хешей из строк в файле

Привет всем! У меня есть два файлика csv, в первом одна строка:

aaaaa;bbbbbbbb

Во втором просто:

bbbbbbbb

Мне надо посчитать хеши для этих значений и я набросал что-то подобное:

val parser = CSVParser.parse(new FileReader(input), CSVFormat.EXCEL.withDelimiter(delimiter))
val line = parser.getRecords.asScala.map(record => {
  record.iterator().asScala.filter(_.trim.nonEmpty).map(value => {
    Base64.encode(Blake2b512.hash(value.trim))
  }).toList
})

println(line.foldLeft(List.empty[String])((acc, t) => acc ++ t))

Здесь delimiter - это `;`, input - путь до файла. Результат выполнения:

List(J26qA0M6CELrh5wNkMS8Jh5peJoMJa/j1UtUE+9ABwAKz5YcXx473prQylmlXt0gxdUGhX3TGY3cKpg9tZfVng==)

List(aTbBrHUvRSn7eO9F/FgZ5KhPY0shvUWssNuENtpnF66Xr4Cy+Wve1W4olK3RGIu8DLc5mr7cpSu5wSU562R/Lw==,
FNcps5PCPsNNef/2uKREMMf4q+IE1jd/tNtumFgngf5QtovNgqk3st6efuCazW99+S8Q9t4VekNFZl/ekdKNUA==)

И у меня возник вопрос, почему для одной и той же строки(`bbbbbbbb`) посчитался разный хеш? При том, что если поменять местами `bbbbbbbb` и `aaaaa`, то хеш одинаковый будет в обоих случаях для `bbbbbbbb`.

Почему порядок расположения строк влияет на расчет хеша?

Мне казалось, что если строки равные, то и хеши посчитаются одинаково.

Я тестировал это на библиотеке scrypto(но также пробовал и Guava и commons-codec).

Спасибо за ваши ответы!

 ,

aarexer
()

SpringBoot с JS в общем модуле

Привет всем! У меня есть проект - там JS и Spring-Boot + Hibernate. Потребовалось на его базе сделать два, при этом они отличаются некоторыми классами и зависимостями.

По сути - в идеале, мне бы выделить в один модуль JS+Spring-Boot, как ядро, и от него зависеть, добавляя логику для каждого уже свою.

Так как я использую gradle, то я вижу вот так settings.gradle:

- common_module
- one_proj
- two_proj

Внутри common_module у меня примерно так:

- src
-- main
--- javascript
--- java

В каждом из модулей я подключаю:

apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'org.springframework.boot'

Собираю one_proj и получаю war-ник без JS, но с common_module.jar.

И вот как мне выделить в общий модуль JS и Java?

Или может у вас есть какие-то мысли как правильно поступить в этом случае?

Суть именно в том, что ядро из JS+Java кода - общее для двух проектов, а уже в каждом проекте свои какие-то плюшки.

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

Спасибо за помощь и советы!

 , , ,

aarexer
()

Красиво смерджить список Map, с заполнением плейсхолдером отсутствующих значений

У меня есть список Map, вида:

Map[String, List[String]]

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

Грубо говоря, если :

    List(Map("one" -> List("1"), "two" -> List("2")),
         Map("one" -> List("11"), "two" -> List("22"), "three" -> List("3")), 
         Map("four" -> List("44")))

То на выходе я хочу получить что-то типа такого.

    Map(
          "one"   -> List("1", "11", ""),
          "two"   -> List("2", "22", ""), 
          "three" -> List("", "3", ""), 
          "four"  -> List("", "", "44")
       )

То, что я сделал - крайне убого выглядит.

Я насовал там кучу изменяемых сущностей, сложил все ключи и просто итерировался - вышло громоздко и не понятно.

Может у кого есть желание и немного времени, чтобы научить меня делать такие вещи красиво? В идеале - в Scala стиле, но без сторонних либ, типа Catz и т.д

Заранее Вам спасибо!

 , ,

aarexer
()

Совет по работе

Привет!

Кратко опишу ситуацию

Сейчас работаю в BI-сфере(business intelligence) - по сути - делаем фреймворк для ETL Но вот начал замечать - что начинаю закисать - перестали нравится задачи, в целом, как мне кажется, - они немного однотипные

Всегда что-то куда-то грузим и показываем Из файлов в кафку, из БД в файлы - не важно Вся суть - в операциях над данными и их перекладки - да, там свои нюансы и много крутой логики - но все же

Не знаю, работали ли вы в BI - если да, то как вам? Продолжаете ли вы там работать?

А совет такой хочу спросить: расскажите, пожалуйста кто чем занимается? В какой сфере - насколько нравится, примерные задачи - мне было бы очень интересно. Сорри за оффтоп - просто мне больше не с кем это обсудить

Я пишу на Java - поэтому в первую очередь интересно услышать было бы Java-вистов.

Спасибо!

 , , , ,

aarexer
()

Json туда и обратно

Привет! Есть у меня вот такой класс:

public class Node<T> implements Serializable {
    private final String name;
    private final T value;
    private final String type;

     public Node(String name, T value, String type) {
        this.name = name;
        this.value = value;
        this.type = type;
    }
}

Мне необходима возможность сериализовывать/дессериализовывать в JSON его. При этом T - может быть любой, в том числе и List<E>, Map<K, V> и и.д

Я сделал вот так:

public class NodeMarshaller {
    private final Gson gson;

    NodeMarshalle() {
        this.gson = new Gson();
    }

 
    public String serialize(Node<?> node) {
        return gson.toJson(node);
    }


    public Node<?> deserialize(String node) {
        try {
            Class<?> clazz = Class.forName(new JsonParser().parse(node).getAsJsonObject().get("type").getAsString());
            return gson.fromJson(node, getType(Node.class, clazz));
        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        }
    }

    private Type getType(Class<?> rawClass, Class<?> parameter) {
        return new ParameterizedType() {
            @Override
            public Type[] getActualTypeArguments() {
                return new Type[]{parameter};
            }

            @Override
            public Type getRawType() {
                return rawClass;
            }

            @Override
            public Type getOwnerType() {
                return null;
            }
        };
    }
}
Это все работает при T = String, Integer, ArrayList, но вложенности мне не обеспечивает.

Я использую библиотеку GSON, но в принципе - не важно, могу перейти на любую.

 ,

aarexer
()

Groovy and Spring-test

Всем привет! Раньше мы тестировали все через Junit и писали что-то типа такого:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {
        SchemaConfgiuration.class
})
@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)
public abstract class ApplicationTest {}
наследовались и инжектили бины.

Теперь решили посмотреть в сторону Spock - но возник вопрос - как контекст создавать?

@RunWith(SpringJUnit4ClassRunner.class)

Сейчас уже не прокатит. Никто не переводил свои тесты на Spock? Как я прочел - надо свой писать контекстлоадер, но неужели все так плохо?

 ,

aarexer
()

Final Холивар

Всем хорошей пятницы!

Разгорелся у нас тут спор по поводу ключевого слова final и его использования в объявлении переменных в методах.

Например:

void method() {
        final List<String> lst = new ArrayList<>();
        final Item item = create();
        /**
         * Do some work
         */
    }

Лично я считаю, что лучше с final писать. Коллега же считает, что в таких случаях final лишь замусоривает код и излишен. С другой стороны, тот же Блох советует все же их писать. Однако, если посмотреть на многие библиотеки, например, в Apache - там такой подход не применяется.

Речь идет именно о final в объявлении локальных переменных.

В общем, опрос такой: используете ли вы такой стиль?

Мне было бы интересно узнать ваше мнение!

 ,

aarexer
()

Выбор клавиатуры

Привет! Хочу выбрать себе удобную клавиатуру для работы. Какими пользуетесь вы? Насколько довольны?

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

Бюджет до 8-9т.

 

aarexer
()

Generics in Java

Привет! Возник вопрос по generics и type erasure.

public class GenericEntity<K> {
    private K key;
    private List<String> list;
}

public class Examples {
    private static List<String> getList(final GenericEntity entity) {
        return entity.getList();  //warning here
    }

    private static List<String> getList(final GenericEntity<Integer> entity) {
        return entity.getList();  // all ok
    }
}

Не очень понимаю, почему когда я пытаюсь достать List - у меня на этом месте warning про то, что result of getList() is erased.

Если бы я доставал key - я бы понял, но тут мне кажется как-то странно это.

Прошу консультации:)

 ,

aarexer
()

InputStream from zip file

Привет всем! Пусть есть zip-архив - file.zip. В архиве несколько файлов, имена которых мы не знаем.

Есть ли способ получить общий InputStream, с помощью которого мы последовательно обойдем все файлы в архиве?

Т.е если файл один в архиве:

//inputStream - это input stream на наш файл.
public BufferedReader getReader(InputStream inputStream) {
final ZipInputStream zin = new ZipInputStream(inputStream);
zin.nextEntry();
return new BufferedReader(new InputStreamReader(zin))
}

//BufferedReader - стрим на архив

А если их несколько?

Нужно именно получить один некий общий стрим на все. Вижу только вариант считывать каждый entry в байт массив и из него делать стрим, а дальше их склеивать в один.

Но так не хочется делать.

Может подскажет кто идею? Спасибо!

 ,

aarexer
()

Работа с ресурсами в Java

Привет всем! В Java можно получить ресурс несколькими способами:

  • getClass().getResource(name)
  • TestClass.class.getClassLoader().getResource(name)

В первом способе я знаю, что есть абсолютные и относительные пути. При абсолютном мы ресурс будем искать в classpath/resource_name, а при относительном добавиться еще пакет classpath/our_package/resource_name.

Во втором же случае мы ресурс будем искать в classpath без указания /.

Так вот, пара вопросов:

  • Почему во втором случае нет понятия абсолютный или относительный путь?
  • В первом случае мы используем класслоадер объекта, во втором - класса, так?
  • При этом когда я смотрю в то, что во что собрался проект - я вижу, что относительные ресурсы кладутся в пакет, абсолютные - в корень. Как такое получается?
  • Где можно понятно про это прочесть?
  • Как вы работаете с ресурсами в своих проектах?

Спасибо за помощь!

 

aarexer
()

Geckodriver using in Mac OS

Привет всем! Столкнулся с проблемой такой: Мне понадобилось использовать библиотеку selenium и python 3. Но оно ругается на некий geckodriver, погуглив я нашел решение такое: мы скачиваем geckodriver и кладем в PATH.

Вопросы:

1. Насколько это решение нормальное? И куда лучше класть сторонние либы на mac OS? Я думаю положить его в /usr/local/bin, как сделал бы на linux.

2. Есть ли более красивое решение проблемы?

Спасибо!

 , ,

aarexer
()

Подарки на Новый Год

Привет всем! Скоро Новый Год, а значит уже скоро надо задумываться о подарках для родных.

В общем, так как я не эксперт в теме смартфонов, то прошу совета: хочу подарить два телефона двум людям.

Первый человек любит фотографировать(ся) и не любит часто скидывать с телефона что-то на диски, т.е место надо побольше, плюс не очень маленький экран.

Второй человек с телефона постоянно серфит интернет, т.е хочется экран побольше.

Какие устройства вы можете посоветовать, с бюджетом на один до 15т,а на второй до 20т?

Заранее спасибо.

 

aarexer
()

True Python way

Привет! Синтаксис и основы языка я знаю, вопрос вот в чем: как и что есть в мире питона для комфортной работы? Какие приняты стандарты? Например, использование pyvenv, pip и т.д

Что надо знать и какие приятные мелочи есть еще?

 

aarexer
()

Греется mac

Всем привет! Тут заметил, что периодически у меня греется мак, греется если держать его на коленях или ставить на что-то неровное. Это объяснимо(маленький корпус, железо греется и т.д), но хочу посмотреть как и ищу какую-нибудь систему мониторинга этого. Подскажите кто чем пользуеется?

Также как вы решаете проблемы нагрева мака? Может есть какие-то общие советы?

Спасибо за помощь!

Перемещено leave из desktop

 ,

aarexer
()

Mac and djvu format

Привет! Подскажите, пожалуйста хорошую читалку djvu формата на маке.

Чем пользуетесь? Ну и в целом, если не сложно, накидайте список musthave программ для мака, для комфортной работы.

Да и любым советам по поводу комфортного перехода на мак буду очень благодарен.

Спасибо!

 ,

aarexer
()

Java Directory Watcher

Привет! Опишу проблему: Есть удаленная директория, NFS. Туда сгружаются некоторые файлы(логи), мини-батчами, по 25-30мб. И хранятся там, не модифицируются и не удаляются.

Соответственно, если коротко: watcher service из nio не видит добавление новых файлов в nfs директорию, в которую файлы выгружает EMM.

Подробнее:

Я обрабатываю файлы и навесил специальный watcher на директорию, который отслеживает появление новых файлов.

Watcher из NIO:

 WatchService watchService = null; 
        try { 
            watchService = path.getFileSystem().newWatchService(); 
            path.register(watchService, 
                    StandardWatchEventKinds.ENTRY_CREATE); 
        } catch (IOException e1) { 
            e1.printStackTrace(); 
        } 

for (;;) { 
            WatchKey key = null; 
            try { 
                key = watchService.take(); 
            } catch (InterruptedException e) { 
                e.printStackTrace(); 
            } 
            // Итерации для каждого события 
            for (WatchEvent event : key.pollEvents()) { 
                switch (event.kind().name()) { 
                case "ENTRY_CREATE": 
                    System.out.println("File " + event.context() 
                            + " is created!"); 
                    break; 
                }
            }
 key.reset(); 

Так вот, если я руками добавляю файлы, копирую или перемещаю(cp или mv), тогда он регистрирует этот эвент и пишет мне это сообщение. Но! Файлы туда выгружаются с помощью EMM. И вот тут возникает проблема, ибо он не видит добавление файлов новых.

Права на чтение у меня есть, права на директорию для other группы

r-x

В чем может быть проблема?Сталкивался ли кто-то с этим?

 ,

aarexer
()

Mount sd-card

Добрый день всем! Столкнулся с проблемой. Есть телефон, в нем sd-card. Хотел скниуть на карту кое-что и вдруг обнаружил, что она не определяется системой.

lsblk -f
не показал мне мою карту. Флешки я нормально монтировал раньше..

И второй вопрос, что нужно поставить из пакетов для автоматического маунта устройств?Без записей в fstab. Раньше у меня был nautilus и он кучу всего подтягивал, а сейчас pcmanfm и он автоматом не предлагает монтироваться.

Спасибо всем за помощь!

 ,

aarexer
()

Цветовые схемы

Господа! Возник вот такой вопрос.

А какими цветовыми схемами для терминала вы пользуетесь? У меня сейчас подпиленный solarized-dark, думаю сменить его, но искать подходящий вариант - это долго, да и со вкусом прекрасного у меня тяжело.

Подскажите, какими вы пользуетесь? В идеале с конфигами) я предпочитаю темные темы.

Заранее спасибо!

 , ,

aarexer
()

Посоветуйте планшет

Привет! В общем, ситуация такова, что сейчас я довольно долго добираюсь до работы. Поэтому, чтобы не тратить время это просто так, я решил купить планшет, загрузить туда пару книг и некоторые лекции/видео с конференций и смотреть в дороге.

Но!Я совершенно не разбираюсь в планшетах. Посоветуйте планшет, чтобы можно было нормально читать и смотреть с него?Игры не играю/не собираюсь начинать.

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

 

aarexer
()

RSS подписка на новые темы