LINUX.ORG.RU

Сообщения aarexer

 

Закрытие приложения Swing+JavaFX

Привет! Столкнулся с такой проблемой.

Есть приложение, написано на JavaFX, но при этом есть кусок Swing-а, которое прикручено через SwingNode. Exit сделан так:

Platform.exit()
Т.е закрывается только FX треды всякие, а свинг продолжает жить, что логично - он же в EDT вроде как. В связи с этим вопрос, а как мне Правильно закрывать этот самый SwingNode? В самом SwingNode у меня лежит GLJPanel. Про вариант
System.exit(0)
знаю. Есть какой-нибудь способ другой? Знаю, что можно поставить
node.setDefaultCloseOperation(WindowClosingProtocol.WindowClosingMode.DISPOSE_ON_CLOSE);
Но это не помогает, все равно при закрытии приложения что-то висит в фоне. Прошу совета, так как сам не слишком разбираюсь в том, как с Swing правильно работать) Заранее спасибо за советы.

 , ,

aarexer
()

Scala и строки

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

В Scala, как и в java, строка имутабл, а значит генерится каждый раз новый объект, плюс у меня еще используется интерполяция(с условиями и подстановкой значений). Тут я задумался, а как работает мультистринг(который типа heredoc)?

В целом я склонился к использованию старого-доброго StringBuilder-а, но мне не слишком нравится делать постоянно append. Но мультистринг мне тоже в принципе подойдет, но я хочу понять как он работает. Заранее спасибо!

 , ,

aarexer
()

Xterm настройка

Привет! Перешел тут на днях на Arch. До этого сидел на Debian и использовал xterm. Поставил тут тоже xterm, но столкнулся с проблемой - он никак не хочет включить подсветку директорий и т.д. Мой конфиг:

XTerm*faceName: Bitstream Vera Serif Mono
xterm*faceSize: 11
xterm*vt100*geometry: 80x60
xterm*saveLines: 16384
xterm*loginShell: true
xterm*charClass: 33:48,35:48,37:48,43:48,45-47:48,64:48,95:48,126:48
xterm*termName: xterm-color
xterm*eightBitInput: false

!BLK Cursor
#define _color0        #000d18
#define _color8        #000d18
!RED Tag
#define _color1        #e89393
#define _color9        #e89393
!GRN SpecialKey
#define _color2        #9ece9e
#define _color10       #9ece9e
!YEL Keyword
#define _color3        #f0dfaf
#define _color11       #f0dfaf
!BLU Number
#define _color4        #8cd0d3
#define _color12       #8cd0d3
!MAG Precondit
#define _color5        #c0bed1
#define _color13       #c0bed1
!CYN Float
#define _color6        #dfaf8f
#define _color14       #dfaf8f
!WHT Search
#define _color7        #efefef
#define _color15       #efefef
!FMT Include, StatusLine, ErrorMsg
#define _colorBD       #ffcfaf
#define _colorUL       #ccdc90
#define _colorIT       #80d4aa
!TXT Normal, Normal, Cursor
#define _foreground    #dcdccc
#define _background    #1f1f1f
#define _cursorColor   #8faf9f
URxvt*color0         : _color0
URxvt*color1         : _color1
URxvt*color2         : _color2
URxvt*color3         : _color3
URxvt*color4         : _color4
URxvt*color5         : _color5
URxvt*color6         : _color6
URxvt*color7         : _color7
URxvt*color8         : _color8
URxvt*color9         : _color9
URxvt*color10        : _color10
URxvt*color11        : _color11
URxvt*color12        : _color12
URxvt*color13        : _color13
URxvt*color14        : _color14
URxvt*color15        : _color15
URxvt*colorBD        : _colorBD
URxvt*colorIT        : _colorIT
URxvt*colorUL        : _colorUL
URxvt*foreground     : _foreground
URxvt*background     : _background
URxvt*cursorColor    : _cursorColor
XTerm*color0         : _color0
XTerm*color1         : _color1
XTerm*color2         : _color2
XTerm*color3         : _color3
XTerm*color4         : _color4
XTerm*color5         : _color5
XTerm*color6         : _color6
XTerm*color7         : _color7
XTerm*color8         : _color8
XTerm*color9         : _color9
XTerm*color10        : _color10
XTerm*color11        : _color11
XTerm*color12        : _color12
XTerm*color13        : _color13
XTerm*color14        : _color14
XTerm*color15        : _color15
XTerm*colorBD        : _colorBD
XTerm*colorIT        : _colorIT
XTerm*colorUL        : _colorUL
XTerm*foreground     : _foreground
XTerm*background     : _background
XTerm*cursorColor    : _cursorColor

Понять не могу, почему так. Фон, цвет курсора - он подхватывает, а подсветку - нет. Прошу мне подсказать, что не так.

 ,

aarexer
()

Монитор в 2016 году!

Всем привет! Задумался тут над покупкой монитора нового. До этого пользовался AOC e2350Sh, но у него выгорела небольшая часть пикселей в левом углу, этот небольшой островок, в виде итальянского сапога начал немного раздражать меня.

В виду того, что я нуб в выборе техники(редко что покупаю) - хочу спросить: что можно взять?

Требования:

  • 24 дюйма
  • Регулировка по высоте/наклону
  • Ценовая категория до 20 т.р

Заранее спасибо за помощь!

 ,

aarexer
()

Тестирование методов класса

Привет всем!

В общем, есть у меня класс. В нем есть методы, какие-то из методов - закрытые(private), какие-то открытые(public). Хочу написать на методы класса тесты. Но! Как мне достучаться до private методов? С одной стороны, наверное, это и не нужно, хватит и тестов для public, если они отрабатывают верно - значит все ок. Но хочется мне узнать, возможно ли протестировать все методы класса, не взирая на ограничения.

Тесты пишу на ScalaTest, использую FlatSpec. Знаю, что можно сделать

private[package] def method
Но что-то мне не хочется юзать это в моем проблемном классе..

А может я вообще просто тупо загоняюсь и лучше забить?

В общем, хочется узнать, а как вы тестируетесь)

Всем заранее спасибо за участие!

 ,

aarexer
()

Bash for windows

Привет всем! Так вышло, что есть машина с виндой, админских прав нет на нее. Мне нужна консоль и окружение, portable желательно. А то невозможно сидеть с виндовой консолью + иногда оттуда надо по ssh подключаться. Есть какие-нибудь варианты? CyGwin не предлагайте, так как ее устанавливать надо.

 , ,

aarexer
()

Покупка ноутбука с рук.

Всем привет! Хочу купить с рук ноутбук Lenovo Thinkpad x220. С рук - потому что дешевле будет, до 20т. Понимаю, что за такие деньги можно взять и новый ноутбук другой фирмы, но хочется именно из линейки Thinkpad + слышал, что x220 хорошая модель, по характеристикам он тоже неплох.

Подскажите, стоит ли?

Или не надо?

Также подскажите владельцы, нормально ли он будет работать под Debian или Arch?

Спасибо!

 , ,

aarexer
()

Примеры кода

Всем привет, господа! Обращаюсь вот с каким вопросом. Не могли бы вы подсказать/накидать/ткнуть носом в репозитории или примеры хорошего кода на scala. Чтобы посмотреть как писать правильно. В идеале было бы что-то типа сборника с задачами с решениями. Не встречалось? Заранее спасибо!

 

aarexer
()

Странное поведение с работой с файлом.

Доброго времени суток. Столкнулся с интересным поведением программы. Задача: Заменить символы табуляции в файле на 4 пробела.И записать все обратно в файл. Решение:

val file = new File("test.txt")
val answArr = Source.fromFile(file).getLines().map(_.replace("\t", "    "))
val pw = new PrintWriter(new FileOutputStream(file))
    for (x <- answArr.toArray)   pw.write(x)
 
pw.flush()
pw.close()
Или вот так:
val file = new File("test.txt")
val pw = new PrintWriter(new FileOutputStream(file))
val answArr = Source.fromFile(file).getLines().map(_.replace("\t", "    ")).forEach(str => pw.write(str))
 
pw.flush()
pw.close()
Однако на выходе получаю пустой свой файл. В обоих случаях. При этом, если распечатать в первом случае asnwArr(приведя его к листу), то получаю вроде бы верный ответ(т.е лист не пустой и с заменами табов) Но распечатав его еще раз - уже получаю пустой лист! Как так?

Пример:

val answ = Source.fromFile(file).getLines().map(_.replace("\t", " space "))
    println(answ.length)
    println(answ.length)
 
>> 2 
>> 0

Растолкуйте, пожалуйста, почему так? Очень благодарен всем за помощь!

 

aarexer
()

JavaFX fxml или все в коде писать?

Всем привет! Собственно, вопрос в заголовке. Как я понимаю, на JavaFX можно писать либо fxml, с контроллером и вью, либо отказаться от fxml и писать все в коде, т.е создавать все эти Pane-ы, CheckBox-ы и прочее используя new и писать все в коде.

Какой путь есть правильный? Видел просто на одном из проектов, что там пишется все в fxml, в другом проекте все как описал выше делалось. Хочется узнать, как правильно, как пишите вы?

 ,

aarexer
()

Ноутбук для Java/Python

Всем привет друзья! Решил тут купить себе ноутбук для работы. Работаю в основном с Java(Idea) и Python(Sublime, PyCharm). Посоветуйте ноутбук, который можно прикупить себе и не было проблем с работой в каком-нибудь Arch или Debian дистрибутиве. Диагональ предпочтительно до 13.9, нужен не слишком большой ноутбук, так как использую дома и на работе большой монитор, а в дороге и в отпуске не нужен здоровый. Основные требования - не слишком большой, качественный и без проблем с линуксами. Посоветуйте что можно взять?

 ,

aarexer
()

Различный хеш-код у двух jar-ников

Всем привет! Столкнулся с такой проблемой. Есть проект, который я собираю в Idea, получаю jar-ник. Также этот же проект я собираю в Jenkins, тоже получаю jar-ник. Мне необходимо, чтобы то, что я собираю Idea и то, что собирает Jenkins имело одинаковую md5-сумму. Чтобы это было так, то я добавляю

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile>
                        <addMavenDescriptor>false</addMavenDescriptor>
                    </archive>
                </configuration>
            </plugin>
        </plugins>
    </build>
Т.е я подкладываю один MANIFEST.MF, с фиксированными строками:
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: SomeUser
Created-By: Apache Maven
Build-Jdk: 1.8.0_60
И выпиливаю из jar-ника всякие pom-ы. Все было бы отлично, но jar-ники все равно различаются. Почему-то после сборки Jenkins-ом я получаю на выходе
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver

Built-By: SomeUser
Created-By: Apache Maven
Build-Jdk: 1.8.0_60
Т.е он меняет строки местами и добавляет пустую в середину. При этом даже бинарные файлы некоторые различны(не все, в моем случае - два). Соответственно, хешы различны у джарников.А мне крайне необходимо, чтобы они были одинаковы, если src-код не изменялся. Посоветуйте что делать, господа!

 , , ,

aarexer
()

Как правильно сделать в Python

Всем привет! Есть файлик, с него надо прочитать строку и все, больше он не нужен. Так вот, правильно ли вот так сделать:

def get_hostname():
	return open("/proc/sys/kernel/hostname", "r").read().replace("\n", "")
Т.е если мы вот так открыли его, то закроется ли дескриптор после ретурна? Или он так и останется висеть? Вообще как правильней делать, если надо просто один раз прочитать из файла строку и забыть о нем?

 ,

aarexer
()

Настройка xterm

Всем привет! Возникла такая проблема. Настраиваю я себе xterm. Прописал:

xterm*VT100.Translations: #override \
                    Shift <Key>Up:              scroll-back(1) \n\
                    Shift <Key>Down:            scroll-forw(1) \n\
                    ~Meta Shift Ctrl <Key>V:    insert-selection(CLIPBOARD) \n\
                    ~Meta Shift Ctrl <Key>C:    copy-selection(CLIPBOARD) \n\

Т.е по нажатию Shift + Ctrl + C копирую в Clipboard-буфер, по нажатию на Shift + Ctrl + V - вставляю из него. Мышью же стандартно при выделении кидается в Primary-буфер все. Вставка колесиком.

Все норм. Но! Если я в самом терминале выделяю что-нибудь, копирую в Clipboard, а после мышью выделяю что-нибудь другое, то выделенное мышью кидается сразу в оба буфера. Если не в терминале, то все работает стандартно. А тут почему-то перезатирается при выделении в консоли clipboard, хотя они же не связаны.. Что не так? Заранее спасибо!

 

aarexer
()

WP site on 8080 port

Всем привет! Есть у меня сайт на вордпрессе, стоит phpmyadmin. Хочу перекинуть сайт на другой порт, например, 8080. Для этого:

ports.conf

Listen 8080
#Listen 80

site-avaible/000-default.conf

<VirtualHost *:8080>

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

Порт 8080 открыт. Сайт не открывается. Как я понял, это из-за того, что в wordpress в настройках прописан именно site.com мой абстрактный. Заменять все в бд на site.com:8080 как-то не вариант. Есть ли еще способы?

 ,

aarexer
()

Обо всем и по порядку.

Всем привет! Не так давно я случайно наткнулся в интернете на интересную статью из блога, где подробно расписывалось, что происходит, когда мы хотим открыть какой-нибудь интернет-ресурс. Описывалось подробно, что, куда и почему посылаем, как отрабатывает тот или иной компонент. Но потерял данную статью и найти не могу, а я не дочитал ее. В связи с чем два вопроса:

1) Может кто тоже натыкался и скинет ссылку на статью?

2) Какие еще подобные материалы есть?Где подробно описывается как работает что-то. Например, почитал бы подобный материал про SystemD.

 ,

aarexer
()

Grub4Dos и мультизагрузочная флешка

Всем привет! Решил я тут сделать себе мультизагрузочную флешку, как раз появилось немного времени. В общем поставил я Grub4Dos на флешку еще на работе, залил туда дистрибутивы, отредактировал menu.lst, небольшие дистрибутивы типа victoria, mhdd, memtest, udpcast - работают. А вот при попытке установить/загрузить дистрибутив - возникают проблемы. При загрузке finnix-а получается так, что он не может примонтироваться. А вот при установке linux-а(debian-а): Все загружается, идем по шагам установки и когда доходим до монтирования устройства - получаем ошибку. Конфиг:

title Debian-frimware 8.0 Jessie x64
kernel /boot/linux/debian/x64/vmlinuz
initrd /boot/linux/debian/x64/initrd.gz

title Download finnix-111.iso - Finnix [Finnix]
map /boot/finnix-111.iso (hd32) || map --mem /boot/finnix-111.iso (hd32)
map --hook root (hd32)
chainloader (hd32)
boot

title Download firmware-8.0.0-i386-netinst.iso - firmware-8.0.0-i386 [firmware-8.0.0-i386]
map /boot/firmware-8.0.0-i386-netinst.iso (hd32) || map --mem /boot/ffirmware-8.0.0-i386-netinst.iso (hd32)
map --hook root (hd32)
chainloader (hd32)
boot

Может есть какие мысли почему так происходит?

 ,

aarexer
()

JavaFX Button

Всем привет! Возник такой вопрос. Есть у меня панель с кнопками, на UI. Хочу реализовать такую штуку, чтобы по нажатию на нее появлялось меню(рядом). А при повторном нажатии на нее меню исчезало. Реализовал панель с кнопками через HBox, туда добавил все, повесил EventHandler-ы. Вопрос вот в чем, как отследить, что кнопка уже была нажата?Т.е нужен какой-то счетчик наверное, каждое второе нажатие - убирает меню, остальные - его добавляют. Либо мой второй вариант это создать новый класс кнопки, отнаследоваться от него и добавить атрибут boolean active = false; При нажатии проверять, этот флаг. Но ради флага городить такие костыли.. В общем, подкиньте, пжлст, идею, ребяты!

 ,

aarexer
()

JavaFX pretty GUI

Всем привет! Возник вопрос, в связи с написанием десктопного приложения, а именно, как написать красивый и функциональный GUI. Как пишется GUI типа как в Idea от JetBrains(С выезжающими окошками/меню)? Буду рад любым примерам красивого интерфейса, который вас заинтересовал/привлек внимание.

 , ,

aarexer
()

Безопасное обновление Debian 7

Всем привет! У меня на сервере стоит Debian 7. Также на нем крутится Apache, svn, redmine(2.4.1) и т.д Решил я обновиться, но встал такой вопрос, что можно безбоязненно обновлять?Что гарантировано не сломает работу сервисов. Насколько часто надо обновляться? Заранее спасибо за ответы.

Пакеты, которые будут обновлены:
  apache2 apache2-mpm-worker apache2-utils apache2.2-bin apache2.2-common apt apt-utils base-files bind9-host
  binutils bsd-mailx comerr-dev cpio curl dbus debian-archive-keyring dnsutils dpkg dpkg-dev e2fslibs e2fsprogs file
  gnupg gpgv host krb5-locales krb5-multidev ldap-utils libapache2-svn libapt-inst1.5 libapt-pkg4.12 libbind9-80
  libc-bin libc-dev-bin libc6 libc6-dev libcdt4 libcgraph5 libcomerr2 libcups2 libcupsimage2 libcurl3 libcurl3-gnutls
  libcurl4-openssl-dev libdbus-1-3 libdns88 libdpkg-perl libevent-2.0-5 libfreetype6 libfreetype6-dev libgcrypt11
  libgcrypt11-dev libgd2-noxpm libgnutls-dev libgnutls-openssl27 libgnutls26 libgnutlsxx27 libgraph4 libgraphviz-dev
  libgssapi-krb5-2 libgssrpc4 libgvc5 libgvpr1 libicu48 libisc84 libisccc80 libisccfg82 libjasper-dev libjasper1
  libjs-jquery-ui libk5crypto3 libkadm5clnt-mit8 libkadm5srv-mit8 libkdb5-6 libkrb5-3 libkrb5-dev libkrb5support0
  libldap-2.4-2 libldap2-dev liblwres80 libmagic1 libnss-winbind libpam-winbind libpathplan4 libpq-dev libpq5
  libruby1.8 libruby1.9.1 libss2 libssh2-1 libssh2-1-dev libssl-dev libssl1.0.0 libsvn-perl libsvn1 libtasn1-3
  libtasn1-3-dev libwbclient0 libx11-6 libx11-data libx11-dev libx11-doc libxdot4 libxml2 libxml2-dev libxrender-dev
  libxrender1 libyaml-0-2 libyaml-dev libyaml-libyaml-perl linux-headers-3.2.0-4-amd64 linux-headers-3.2.0-4-common
  linux-image-3.2.0-4-amd64 linux-libc-dev locales mime-support multiarch-support mutt ntp ntpdate open-vm-dkms
  open-vm-tools openssl postgresql-9.1 postgresql-client-9.1 ruby1.8 ruby1.8-dev ruby1.9.1 ruby1.9.1-dev samba-common
  samba-common-bin slapd subversion sudo unzip winbind

 ,

aarexer
()

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