czwartek, 11 czerwca 2026

Eclipse - JDT

> Problemy z polskimi znakami na Windows 11
Zmiana zachowania dotyczy AltGr, jednak w pierwszej kolejności sprawdzić przypisania skrótów
Niemniej jednak większość jest interpretowana jako Ctrl+Alt+x a nie Alt+x to może powodować konflikty, jak brak skrótów trzeba dodać do eclipse.ini za 

...
openFile
--launcher.defaultAction
openFile

-Dorg.eclipse.swt.enableAltGr=true
-Duser.language=pl
-Duser.country=PL

a potem restart - bo... problemy z SWT w integracji z systemem Windows 11

> SVN status update wisi na starcie i muli

https://stackoverflow.com/questions/11086474/eclipse-update-svn-cache-hangs-and-locks-up
Windows > Preferences > Team > SVN > Performance
Disable: Computing deep outgoing state, Cache, persistent SSH

> help eclipse
>> OSGI
https://help.eclipse.org/2019-12/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fmisc%2Fruntime-options.html

> eclipse launcher
W windows da się wystartować eclipse przez eclipse exe z tego powodu nie widać jaka java się odpala. Jak to działa....
Warto obejrzeć te jary...
org.eclipse.equinox.launcher.source_1.5.600.v20191014-2022.jar
org.eclipse.equinox.launcher_1.5.600.v20191014-2022.jar

Z process explorer-a da się zobaczyć że java jest odpalana jako proces dziecko z eclipsa
U mnie eclipse jest odpalony z total commandera
Ale widać to tylko gdy jest podana inna java przez parametr -vm
bez tego parametru nie widać...


> dziwna zakładka code recomenders
Podobno powoduje problemy, od jakiegoś czasu nie działa poprawnie podpowiedź po ^C+SPACE wisi długo, odinstalowałem pluginy code recomenders


Wygląda na to że winne są import static.

Znacznie lepiej działa gdy w sekcji java / code style / organize imports / number imports for * jest ustawiona duża wartość, wtedy przy dodawaniu importów wskazuje faktyczne zamiast *

Wtedy ^C+SPACE działa szybko i eclipse się nie zawiesza
Oznacza to że należy w kodzie pisanym pod Eclipse unikać importów statycznych z *

> Nawiedzone skróty klawiaturowe
>> Photon
plugin *bastiankrol
http://basti1302.github.io/startexplorer/  nadpisuje ą

Można spróbować przeszukać definicje w katalogu eclipse plugin.xml regxp sequence="[^"]*\+\s*A"
Sprawdzić keys binding - ale akurat w tym wypadku nie było, po wywaleniu pluginu ą zaczeło działać.

Problem z ź
Generalnie nie jest rozróżnialne ALT+X z CRTL+ALT+X


> modyfikacja run parametry
Stworzone definicje run nie zawsze da się poprawnie przeedytować
Przykład jest w przypadku projektu maven
Zmiana projektu na ivy nie pozwala tego ponownie uruchomić
Definicje są w
workspace\.metadata\.plugins\org.eclipse.debug.core\.launches\KaasPass help.launch
Ostatni element to nazwa uruchamianego lanch

W przypadku projektu Ivy mam

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
    <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
        <listEntry value="/kaas-pass/src/main/java/pl/kamsoft/app/KaasPass.java"/>
    </listAttribute>
    <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
        <listEntry value="1"/>
    </listAttribute>
    <booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
    <stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="pl.kamsoft.app.KaasPass"/>
    <stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-h"/>
    <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="kaas-pass"/>
</launchConfiguration>

Aby przecztał konfiguracje konieczny był restart eclipse po ręcznej zmianie tych plików



Modyfikacja zachowania IDE

Wyłączenie dodawania automatycznego @Ovverride
Może to dziwne, ale na razie nie traktuje tego jako niezbędne, a raczej zaśmiecające kod...
http://stackoverflow.com/questions/6306299/stop-eclipse-adding-the-overide-annotation

http://stackoverflow.com/questions/6982981/setting-the-jre-of-java-eclipse-project-in-plugin-programmatically Jak dodać JRE do projektu programowo

Źródła dla starych wersji EMF https://eclipse.googlesource.com/emf/org.eclipse.emf

Rodzaje pluginów dla Eclipse
Gdzieś tam na końcu dziedziczy po org.eclipse.core.runtime.Plugin w moim wypadku zaczyna się od org.eclipse.ui.plugin.AbstractUIPlugin

http://help.eclipse.org/indigo/index.jsp?topic=/org.eclipse.pde.doc.user/guide/intro/pde_overview.htm

Ładowanie zasobów z poziomu pluginu.
W wielu wypadkach trzeba się odwołać do plików które znajdują się w ramach konkretnego pluginu.
Czasem można się posługiwać względną ścieżką.. czasem jednak nie jest to wygodny sposób.
W jednym z takich przypadków gdzie template są rozmieszczone w różnych katalogach wolę używać bezwzględnej.
Przykład:

platform:/plugin/pl.kamsoft.ide.eclipse.plugins.kamsoft2/template/generator.skeleton

 URL url = new URL("platform:/plugin/pl.kamsoft.ide.eclipse.plugins.kamsoft2/template/generator.skeleton");
 url = Platform.resolve(url);
 InputStream inputStream = url.openConnection().getInputStream();

Taki sposób działa w ramach pluginu.

Plugin sysdeo
TomcatProjectGeneralPropertyPage własności do projektu.
Jak ustawić wartości dla tej strony po wygenerowaniu nowego projektu?

TomcatProjectWebclasspathPropertyPage ustawianie własności dotyczących classpath

Sprawdzenie paczki (pluginu) w systemie
Bundle bundle = Platform.getBundle("com.sysdeo.eclipse.tomcat");

Pobranie projektu na podstawie NATURE_ID
TomcatProject tomcatProject = (TomcatProject) project.getNature(TomcatLauncherPlugin.NATURE_ID);


Dodawanie akcji w Eclipse

http://www.eclipse.org/articles/article.php?file=Article-action-contribution/index.html

https://jaxb.java.net/tutorial/index.html

Problemy z ustawieniem wartości dla kontrolki Text przy pomocy setText(text)
Po ustawieniu wartości jest generowane zdarzenie Swt.MODIFY. Jeżeli z innego listener zostanie wywołana aktualizacja wartości i jest jeden wspólny listener, wtedy może dojść do zapętlenia. Aby tego unikną trzeba stosować semafor, który przestawia czy wyzwalać czy nie.

Czy da się użyć Eclipse JDT poza Eclipse?
http://stackoverflow.com/questions/964747/how-can-i-use-the-java-eclipse-abstract-syntax-tree-in-a-project-outside-eclipse

Pomysł prostego pluginu do Eclipse do konwersji zapisu - przejście pomiędzy formatami
* format properties aaaaa.bbbb.ccccc.ddddd
* format const AAAA_BBBB_CCCCC_DDDDD
* format variable aaaaBbbbCccccDdddd
* format class AaaaBbbbCccccDdddd

Jak używać schowka w Elipse
Rejestracja w menu contextowym
Skopiuj w formacie
Guzik z menu skopiuj jako : jedna z wersji

Przykład który działa jako menu contextowe kopiowanie do schowka: Copy Qualified Name

d:\java\ide\eclipse-3.7\plugins\org.eclipse.jdt.ui_3.7.0.v20110531-1200.jar\org\eclipse\jdt\internal\ui\actions\ActionMessages.properties
d:\java\ide\eclipse-3.7\plugins\org.eclipse.wst.jsdt.ui_1.1.100.v201105041953.jar\org\eclipse\wst\jsdt\internal\ui\actions\ActionMessages.properties
d:\java\ide\eclipse-3.7\plugins\org.eclipse.pde.runtime_3.4.200.v20110508.jar\org\eclipse\pde\internal\runtime\pderuntimeresources.properties
d:\java\ide\eclipse-3.7\plugins\org.eclipse.wst.jsdt.ui_1.1.100.v201105041953.jar\plugin.properties

Akcje dodawanie http://www.eclipse.org/articles/Article-action-contribution/

Layout in eclipse
http://www.eclipse.org/articles/article.php?file=Article-Understanding-Layouts/index.html

Dodanie


piątek, 20 września 2024

Huwei embedded music player - lyrics for songs (wbudowany player Huwei - tekst piosenki)

Testowane na Huwei P8

Nie wspiera czytania zaszytych lyrics z mp3

Dla piosenki w pliku piosenka.mp3 czyta tekst piosenki z pliku piosenka.lrc, jednak plik musi być w formacie LRC. Jeżeli nie będzie tam tych tagów plik nie pojawi się żadna informacja o tym.

Format LRC przykład

[ti:01_It's_No_Good]
[ar:Depeche Mode]
[la:EN]
[re:LRCgenerator.com]
[ve:4.00]

[00:30.10]I'm going to take my time
[00:34.19]I have all the time in the world
[00:39.50]To make you mine
[00:43.93]It is written in the stars above

Jeżeli piosenka znajduje się w katalogu /Music/Depeche_Mode/01_It's_No_Good.mp3 plik z tekstem będzie w /Music/Depeche_Mode/01_It's_No_Good.lrc

Działa fajnie i podświetla płynnie fragment który jest oznaczony. 

Całkiem fajny LRC editor https://www.lrcgenerator.com/

ENGLISH

Tested on Huwei P8

Does not support reading embedded lyrics from mp3

For a song in the file song.mp3 it reads the lyrics from the file song.lrc, but the file must be in LRC format. If these tags are not there, the file will not show any information about it.

Format LRC example :

[ti:01_It's_No_Good]
[ar:Depeche Mode]
[la:EN]
[re:LRCgenerator.com]
[ve:4.00]

[00:30.10]I'm going to take my time
[00:34.19]I have all the time in the world
[00:39.50]To make you mine
[00:43.93]It is written in the stars above


If the song is in the directory /Music/Depeche_Mode/01_It's_No_Good.mp3 the file with the lyrics will be in /Music/Depeche_Mode/01_It's_No_Good.lrc

It works great and smoothly highlights the fragment that is marked.

Quite a cool LRC editor https://www.lrcgenerator.com/

sobota, 15 października 2022

Gradle

Some of them like transitive dependency but not me

Wiadomo są tacy co kochają dependency transitive - ale nie ja

Simple total fuck off transitive dependency for all configuration in build.gradle

Chyba najprostszy sposób i całkowicie globalny aby to wywalić jak to mówią at all

...
configurations {
    forEach {
        c -> c.setTransitive(false)
    }
}

> Custom function for disable transitive dependency
Let's try definne metod for switch off transitive dependency ... of course possible many way as below

Taki mam pomysł aby zrobić to przez funkcję która opakowuje dependency... dla fanów wyższości c++ nad c=c+1 da to uproszczenie! Wystarczy dodać do definiowanego dependency prefix noTransitive, a "fantastyczność" groovy załatwi nam to że zamieni się to na funkcję (metodę) która zmieni nasze dependendcy w nietranzytywne

Based on cloure definition... for groovy looks not so good to long to say is good
Patrząc na podstawową konstrukcję definicji dependency bez tranzytywności przy pomocy colusure albo setera żadna nie wypada przyjażnie

dependencies {
   runtimeOnly("com.haulmont.cuba:cuba-global:7.2.15") {
      setTransitive(false) }
...

or

dependencies {
   runtimeOnly("com.haulmont.cuba:cuba-global:7.2.15")
      .setTransitive(false)
...

So look at alternative solution with function version...

def noTransitive(def dep) { return dep.setTransitive(false) }
def noTransitive(def dep) { dep.setTransitive(false) }
def noTransitive(def dep) { dep.transitive = false }
def noTransitive(dep) { dep.transitive = false }
def noTransitive = { d -> d.setTransitive(false) }

Next define our dependecy in clasic clousure method ... with transitive version
Zdefiniujmy więc jakieś dependency co tak na oko ze 64 pozycje tranzytywne oczywiście wszystko nam będzie "potrzebne" i "niezbędne" bo nie wypada mieć paczki co waży 20M tylko minimum 200M

dependencies {
   runtimeOnly("com.haulmont.cuba:cuba-global:7.2.15")
...

or without tranisitive
a tak by to wyglądało bez transitive

dependencies {
   noTransitive runtimeOnly("com.haulmont.cuba:cuba-global:7.2.15")
...

wtorek, 4 stycznia 2022

log4j 2.x vs 1.2.x jakość kodu

CVE-2021-44228

https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44228

Apache Log4j2 2.0-beta9 through 2.15.0 (excluding security releases 2.12.2, 2.12.3, and 2.3.1) JNDI features used in configuration, log messages, and parameters do not protect against attacker controlled LDAP and other JNDI related endpoints. An attacker who can control log messages or log message parameters can execute arbitrary code loaded from LDAP servers when message lookup substitution is enabled. From log4j 2.15.0, this behavior has been disabled by default. From version 2.16.0 (along with 2.12.2, 2.12.3, and 2.3.1), this functionality has been completely removed. Note that this vulnerability is specific to log4j-core and does not affect log4net, log4cxx, or other Apache Logging Services projects.

Z wersji 2.x tylko 2.12.2, 2.12.3 oraz 2.3.1 tego nie miały

Podpierając się wydaniami:
https://logging.apache.org/log4j/1.2/changes-report.html

log4j 2.x chamges

 
log4j 2.x problem start

https://logging.apache.org/log4j/2.x/changes-report.html

log4j 1.x changes

 

policzmy jak ktoś miał pecha 2021 - 2013?? = 8 lat z taka dziurą?

fajnie ze przez 8 lat ktoś na to nie wpadł
i się nawet nad tym nie zastanowił
przecież atak jest jak sql injection

U nas czasem błędy też wychodzą po paru latach...
tu na takim mega projekcie przez 8 nie wyszło?
o co comman?

Ktoś może celowo ma teraz lepsza lukę
i tą postanowił poświecić aby podrzucić lepsza


... ale to już taki durny żart hihi

Tak na marginesie w grudniu koniecznie trzeba było wersje zmienić na 2.15 dziś już trzeba na 2.17 ... oby tylko tą

Wersja 1.2 jest od 2002 do 2012 bez krytycznych problemów. Większość projektów korzysta z rolling file appender i pattern formater - problemy jakie tu były na poziomie appederów socket i jms które większość z nas nie używa....

Tak na marginesie jedyne poważne problemy



środa, 14 października 2020

Windows 10 - tasbar przypięcie programu

Interesuje mnie taskbar, to dlatego że przypięty program do taskbara na domyślnie skrót wywołania, który działa ^W (window) + numer kolejny zacząwszy od menu (Windows ikona). Skróty przypisane do ikony nie działają zbyt dobrze – tzn czasem działają a czasem nie i mają nawiedzony format ^C + ^A + litera, tu dla taskbara skróty są lepsze ^W + nr i wydają się działać. Niestety skortcut do bat nie da się przypiąć do taskbara. Z tego wynika że da się przypiąć tylko exe i jego skrót.
Przypiąć do taskbar się da nawet dla skrót, ale nie dla wszystkiego. Wygląd na to że musi być to skrót do exe. Skrót do bat, vbs, cmd nie ma tej opcji – nie da się go przypiąć nigdzie tzn. ani taskbar, ani ekran startowy. 


Przypięty exe jest unikalny w skali taskbar, więc wydaje się że nie da się go parametryzować. Pojawia się na pasku jako 1 pozycja dla takiego exe, drugi skrót do tego samego exe powoduje, że dostajemy zamiast przypnij, tylko opcje odepnij, czyli przypinanie działa tylko na nazwę programu exe, a nie na skrót. 

Okazuje się że shortcut do exe łyka przekazane parametry. Więc można zrobić wiele shortcutów, które są do tego samego exe, który łyka różne parametry. Ale konieczny jest pewien zabieg dodatkowy, trzeba albo skopiować ten sam exe pod inną nazwą albo skorzystać z mklink i utworzyć link z inną nazwą. 


Puenta…. Czy to nie jest przykład słabego rozwiązania? Cóż … jakoś to oszukałem… ale jest to frustrujące, pomysł był dobry ale wykonanie nie najlepsze, po następnej aktualizacji będzie pewnie gorzej … tego się spodziewaj, więc carpe diem bo nie wiesz kiedy będzie!

czwartek, 8 października 2020

Libre Office

> Libre Office czy Open Office
Dziś już nie ma raczej wyboru - Open Office to historia

> Instalacja dla Windows 7 bez SP1
Stare wersje dla win7 bez SP1 nie pójdzie więcej niż 5.4
https://downloadarchive.documentfoundation.org/libreoffice/old/

> Wyłączenie sprawdzania aktualizacji
    Narzędzia / Opcje / Libre Office / Aktualizacja Online

> Wyłączenie podkreślania wszystkiego na bieżąco gdy są błędy
    Narzędzia / Opcje / Ustawienia języka / Pisownia / Opcje / Automatyczne sprawdzanie

> Podstawowe skróty klawiatury
https://help.libreoffice.org/3.6/Writer/Shortcut_Keys_for_Writer/pl

> Własne skróty klawiatury - np wykorzystanie własnych skrótów do styli
Trzeba przedefiniować skróty klawiszowe, Zwykle do podstawowych styli nagłówka przypisano ^C+1,2,3.. chciałbym dla własnego stylu zarezerwować ^C+4. Można to zrobić tak:
    Narzędzia / Dostosuj / Klawiatura /
    szukamy potencjalnego klawisza (raczej nie ma innych niż dozwolone z listy) /
    Kategoria - Style / rodzaj np akapit / wybieramy ten który nas interesuje /
    dajemy guzik modyfikuj

> Wyłączenie sprawdzania pisowni dla bloku
    Wybrać i zaznaczyć blok
    Narzędzia / Język / Dla zaznaczenia / Brak

niedziela, 15 marca 2020

Instagram browser

Strange instagram limitation

https://www.devagroup.pl/blog/instagram-ma-swoje-limity-i-ograniczenia-sprawdz-teraz-czy-znasz-je-wszystkie


Simple script utility for instagram browser.

Not required any software only Browser. Firefox or Chrome

Little stupid by very simple and do what is require... scroll page automaticaly, and allow get image, video from post.

In console window (F12) simply put code. After then you see this buttons and global window key down handlers
  • D - scroll down page
  • S - stop scroll
  • U - scroll up
  • I - dump image url if selected - global function imgu()
Page is scroll down by 400px, or more but if to fast instagram wait for loading images
Big instagram hashtag or @ has problem. Browser alocate a lot of memmory, it slow down computer, event can't scroll more for example #instagood or #flamingo.

With document body is associated global key handler and some function




Just open Firefox console (F12)  and Copy - paste