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 подписка на новые темы