V Brně na FIT VUT probíhá třídenní open source komunitní konference DevConf.CZ 2025. Vstup je zdarma, nutná je ale registrace. Na programu je celá řada zajímavých přednášek, lightning talků, meetupů a workshopů. Přednášky lze sledovat i online na YouTube kanálu konference. Aktuální dění lze sledovat na Matrixu, 𝕏 nebo Mastodonu.
Vyloučení technologií, které by mohly představovat bezpečnostní riziko pro stát, má umožnit zákon o kybernetické bezpečnosti, který včera Senát schválil spolu s novelami navazujících právních předpisů. Norma, kterou nyní dostane k podpisu prezident, počítá rovněž s prověřováním dodavatelů technologií pro stát. Normy mají nabýt účinnosti od třetího měsíce po jejich vyhlášení ve Sbírce zákonů.
Open source platforma Home Assistant (Demo, GitHub, Wikipedie) pro monitorování a řízení inteligentní domácnosti byla vydána v nové verzi 2025.6.
Po Red Hat Enterprise Linuxu a AlmaLinuxu byl v nové stabilní verzi 10.0 vydán také Rocky Linux. Přehled novinek v poznámkách k vydání.
Bylo vydáno Eclipse IDE 2025-06 aneb Eclipse 4.36. Představení novinek tohoto integrovaného vývojového prostředí také na YouTube.
Americká filmová studia Walt Disney a Universal Pictures podala žalobu na provozovatele populárního generátoru obrázků pomocí umělé inteligence (AI) Midjourney. Zdůvodňují to údajným porušováním autorských práv. V žalobě podané u federálního soudu v Los Angeles označují firmu za „bezednou jámu plagiátorství“, neboť podle nich bez povolení bezostyšně kopíruje a šíří postavy z filmů jako Star Wars, Ledové království nebo Já, padouch, aniž by do nich investovala jediný cent.
Ultra Ethernet Consortium (UEC), jehož cílem je optimalizace a další vývoj Ethernetu s důrazem na rostoucí síťové požadavky AI a HPC, vydalo specifikaci Ultra Ethernet 1.0 (pdf, YouTube).
Francouzský prezident Emmanuel Macron chce zakázat přístup na sociální sítě pro děti do 15 let. Francie podle něj tento krok udělá sama do několika měsíců, i pokud se na něm neshodnou další státy Evropské unie. Reaguje tak na úterní vraždu vychovatelky, kterou ve východofrancouzském městě Nogent pobodal 14letý mladík. Jednotlivé sociální sítě podle něj mají možnost věk ověřit a vymáhat zákaz pomocí systémů na rozpoznávání tváří.
Byl aktualizován seznam 500 nejvýkonnějších superpočítačů na světě TOP500. Nejvýkonnějším superpočítačem zůstává El Capitan od HPE (Cray) s výkonem 1,742 exaFLOPS. Druhý Frontier má výkon 1,353 exaFLOPS. Třetí Aurora má výkon 1,012 exaFLOPS. Nejvýkonnější český počítač C24 klesl na 165 místo. Karolina, GPU partition klesla na 195. místo a Karolina, CPU partition na 421. místo. Další přehledy a statistiky na stránkách projektu.
Oficiálně byl vydán Android 16. Detaily na blogu a stránkách věnovaných vývojářům.
Tak pokud jste četli můj poslední blog. Tak víte, že se snažím naprogramovat utilitu na zálohovaní DVD9 na DVD5. Od doby co jsem psal minulý blog jsem pokročil, a tak bych se chtěl pochlupit a zjistit váš názor. První screenshot mého programu najdete na http://kozzi.php5.cz/wxdvdshrink.png
první alfa verze by měla být hotová příští týden o víkendu.
Tiskni
Sdílej:
nevim treba proc ty vyvojari jxp commanderu zacinaj od gui - program sice pekne vypada ale nedela vubec nic. je to otazka priorit asi ...
#!/bin/sh # # configure script for YourApp # Copyright (c) Year YourName <YourEmail> # # YourApp is distributed under the terms of YourLicense license # # # Project name # PROJECT= # # Project type # Available options: # lib # exe # PROJECT_TYPE="exe" # # Only used when building library # LIB_NAME sets library name - will be prefixed by "lib" and suffixed by ".so" # LIB_VER sets library version # LIB_NAME= LIB_VER= # # Only used when building executable # EXE_NAME sets name of output executable # EXE_NAME= # # Where are the sources located # SRC_DIR="./src" # # Default install path # Can be changed by --prefix option # DEFAULT_PREFIX="/usr/local" # # Where the output files are stored # DEST_DIR="./dest_dir" # # List of included directories # INCLUDES= # # List of flags for compiler # Only used for compilation # CFLAGS= # # List of libraries linked to output file # Only used for linking # LIBS= # # List of defines # DEFINES= # # Switch to verbose mode # VERBOSE="yes" # # This function is called before Makefile and other stuff is generated # You can use it for setting up some variables (eg. CFLAGS, LIBS etc.) # return 0 if script can continue otherwise it will exit # pre_create_makefile() { return 0 } # # This function is called after Makefile and other stuff is generated # You can use it to add some lines to "install.sh" and "uninstall.sh" script # return 0 if script can continue otherwise it will exit # post_create_makefile() { return 0 } # # Please don't modify next code # C_FILES= CPP_FILES= RET_VAL= show_help() { echo -e "\nUsage: ${1} [options]" echo " --help - show this help" echo " --prefix=prefix - set install path" echo " default is ${DEFAULT_PREFIX}" } get_file_name() { if [ -z "$1" ] then RET_VAL="" else RET_VAL="$1" RET_VAL=${RET_VAL##*/} fi } get_file_name_without_ext() { if [ -z "$1" ] then RET_VAL="" else get_file_name $1 RET_VAL=${RET_VAL%.*} fi } get_file_path() { if [ -z "$1" ] then RET_VAL="" else RET_VAL="$1" RET_VAL=${RET_VAL%/*} fi } build_obj_name() { if [ -z "$1" ] then RET_VAL="" else get_file_path $1 FILE_PATH="${RET_VAL}/obj/" get_file_name_without_ext $1 RET_VAL="${FILE_PATH}${RET_VAL}.o" fi } scan_files() { C_FILES=`find ${SRC_DIR} -name *.c` CPP_FILES=`find ${SRC_DIR} -name *.cpp` } echo "Running configure for ${PROJECT} ..." echo if [ "${VERBOSE}" = "yes" ] then echo "Parsing command line arguments ..." else echo -n "Parsing command line arguments ... " fi # parse cmd line arguments HELP="no" PREFIX= for I in $* do case $I in $0) ;; --prefix*) PREFIX=${I##*=} [ "${VERBOSE}" = "yes" ] && echo -e "\tPREFIX set to ${PREFIX}." ;; --help*) HELP="yes" [ "${VERBOSE}" = "yes" ] && echo -e "\tHelp argument detected." ;; *) [ "${VERBOSE}" = "yes" ] && echo -e "\tIgnoring unknown argument ${I}." ;; esac done [ -z "${PREFIX}" ] && PREFIX=${DEFAULT_PREFIX} echo "done." if [ "$HELP" = "yes" ] then show_help $1 exit 0 fi pre_create_makefile [ $? -eq 0 ] || exit 1 if [ "${VERBOSE}" = "yes" ] then echo "Building file list and depecies..." else echo -n "Building file list and depecies... " fi # scan for c++ source files scan_files if [ -z "$CPP_FILES" -a -z "$C_FILES" ] then echo "fail." echo "Error: No source files found." exit 1 fi # create list of object files & parse depencies OBJS=() DEPENCIES=() INDEX=0 for I in $CPP_FILES $C_FILES do [ "${VERBOSE}" = "yes" ] && echo -e "\t${I}" build_obj_name $I OBJS[$INDEX]="${RET_VAL}" DEPS=() UVOZOVKA="\"" INDEX2=0 for DEP in `cat ${I} | grep \#include` do DEP="${DEP}\"" DEP="`cut -d${UVOZOVKA} -f2 <<<${DEP}`" if [ -n "$DEP" ] then get_file_path $I DEP="${RET_VAL}/${DEP}" [ "${VERBOSE}" = "yes" ] && echo -e "\t\t${DEP}" DEPS[$INDEX2]="${DEP}" let INDEX2=INDEX2+1 fi done DEPENCIES[$INDEX]="${DEPS[@]}" let INDEX=INDEX+1 done echo "done." if [ "${VERBOSE}" = "yes" ] then echo "Creating destination dirs for object files ..." else echo -n "Creating destination dirs for object files ... " fi # build directories for object files PREV_DIR= for I in ${OBJS[@]} do get_file_path $I if [ ! "${PREV_DIR}" = "${RET_VAL}" ] then if [ ! -d "${RET_VAL}" ] then [ "${VERBOSE}" = "yes" ] && echo -en "\t${RET_VAL} ... " mkdir -p ${RET_VAL} if [ ! -d "${RET_VAL}" ] then [ "${VERBOSE}" = "yes" ] && echo "fail." echo "fail." exit 1 else [ "${VERBOSE}" = "yes" ] && echo "done." fi else [ "${VERBOSE}" = "yes" ] && echo -e "\t${RET_VAL} ... already exists." fi PREV_DIR="${RET_VAL}" fi done echo "done." # create destination directory (if doesn't exist) if [ "${VERBOSE}" = "yes" ] then echo "Creating destination directory ..." else echo -n "Creating destination directory ... " fi if [ ! -d "${DEST_DIR}" ] then [ "${VERBOSE}" = "yes" ] && echo -ne "\t${DEST_DIR} ... " mkdir -p ${DEST_DIR} if [ ! -d "${DEST_DIR}" ] then [ "${VERBOSE}" = "yes" ] && echo "fail." echo "fail." exit 1 else [ "${VERBOSE}" = "yes" ] && echo "done." fi else [ "${VERBOSE}" = "yes" ] && echo -e "\t${DEST_DIR} ... already exists." fi echo "done." echo -n "Generating Makefile ... " LINK_PROGRAM="gcc" [ -n "${CPP_FILES}" ] && LINK_PROGRAM="g++" OUTPUT_DIR="${DEST_DIR}/bin" [ "${PROJECT_TYPE}" = "lib" ] && OUTPUT_DIR="${DEST_DIR}/lib" [ -d "${OUTPUT_DIR}" ] || mkdir -p "${OUTPUT_DIR}" [ -f Makefile ] && rm -f Makefile touch Makefile if [ "${PROJECT_TYPE}" = "lib" ] then cat >>Makefile <<_EOF all: ${OUTPUT_DIR}/lib${LIB_NAME}.so.${LIB_VER}.0 strip: ${OUTPUT_DIR}/lib${LIB_NAME}.so.${LIB_VER}.0 strip ${OUTPUT_DIR}/lib${LIB_NAME}.so.${LIB_VER}.0 ${OUTPUT_DIR}/lib${LIB_NAME}.so.${LIB_VER}.0: ${OBJS[@]} ${LINK_PROGRAM} -g -shared -W1,-soname,lib${LIB_NAME}.so.${LIB_VER} ${DEFINES} ${LIBS} -o ${OUTPUT_DIR}/lib${LIB_NAME}.so.${LIB_VER}.0 ${OBJS[@]} -lc _EOF else cat >>Makefile <<_EOF all: ${OUTPUT_DIR}/${EXE_NAME} strip: ${OUTPUT_DIR}/${EXE_NAME} strip ${OUTPUT_DIR}/${EXE_NAME} ${OUTPUT_DIR}/${EXE_NAME}: ${OBJS[@]} ${LINK_PROGRAM} -Wall ${DEFINES} ${LIBS} -o ${OUTPUT_DIR}/${EXE_NAME} ${OBJS[@]} _EOF fi INDEX=0 for I in $CPP_FILES do if [ "${PROJECT_TYPE}" = "lib" ] then cat >>Makefile <<_EOF ${OBJS[$INDEX]}: ${I} ${DEPENCIES[$INDEX]} g++ -fPIC -Wall ${DEFINES} ${INCLUDES} ${CFLAGS} -g -c ${I} -o ${OBJS[$INDEX]} _EOF else cat >>Makefile <<_EOF ${OBJS[$INDEX]}: ${I} ${DEPENCIES[$INDEX]} g++ -Wall ${DEFINES} ${INCLUDES} ${CFLAGS} -g -c ${I} -o ${OBJS[$INDEX]} _EOF fi let INDEX=INDEX+1 done #for I in $CPP_FILES for I in $C_FILES do if [ "${PROJECT_TYPE}" = "lib" ] then cat >>Makefile <<_EOF ${OBJS[$INDEX]}: ${I} ${DEPENCIES[$INDEX]} gcc -fPIC -Wall ${DEFINES} ${INCLUDES} ${CFLAGS} -g -c ${I} -o ${OBJS[$INDEX]} _EOF else cat >>Makefile <<_EOF ${OBJS[$INDEX]}: ${I} ${DEPENCIES[$INDEX]} gcc -Wall ${DEFINES} ${INCLUDES} ${CFLAGS} -g -c ${I} -o ${OBJS[$INDEX]} _EOF fi let INDEX=INDEX+1 done #for I in $C_FILES # add clean, install and uninstall to Makefile if [ "${PROJECT_TYPE}" = "lib" ] then cat >>Makefile <<_EOF clean: rm -f ${OBJS[@]} rm -f ${OUTPUT_DIR}/lib${LIB_NAME}.so.${LIB_VER}.0 install: ${OUTPUT_DIR}/lib${LIB_NAME}.so.${LIB_VER}.0 @./install.sh uninstall: @./uninstall.sh _EOF else cat >>Makefile <<_EOF clean: rm -f ${OBJS[@]} rm -f ${OUTPUT_DIR}/${EXE_NAME} install: ${OUTPUT_DIR}/${EXE_NAME} @./install.sh uninstall: @./uninstall.sh _EOF fi # generate install and uninstall scripts [ -f install.sh ] && rm -f install.sh [ -f uninstall.sh ] && rm -f uninstall.sh touch install.sh touch uninstall.sh chmod a+x install.sh chmod a+x uninstall.sh if [ "${PROJECT_TYPE}" = "lib" ] then cat >>install.sh <<_EOF #!/bin/sh [ -f ${PREFIX}/lib/lib${LIB_NAME}.so.${LIB_VER}.0 ] && rm -f ${PREFIX}/lib/lib${LIB_NAME}.so.${LIB_VER}.0 cp ${OUTPUT_DIR}/lib${LIB_NAME}.so.${LIB_VER}.0 ${PREFIX}/lib/lib${LIB_NAME}.so.${LIB_VER}.0 chmod a+r ${PREFIX}/lib/lib${LIB_NAME}.so.${LIB_VER}.0 [ -f ${PREFIX}/lib/lib${LIB_NAME}.so.${LIB_VER} ] && rm -f ${PREFIX}/lib/lib${LIB_NAME}.so.${LIB_VER} [ -f ${PREFIX}/lib/lib${LIB_NAME}.so ] && rm -f ${PREFIX}/lib/lib${LIB_NAME}.so ln -s ${PREFIX}/lib/lib${LIB_NAME}.so.${LIB_VER}.0 ${PREFIX}/lib/lib${LIB_NAME}.so.${LIB_VER} ln -s ${PREFIX}/lib/lib${LIB_NAME}.so.${LIB_VER}.0 ${PREFIX}/lib/lib${LIB_NAME}.so chmod a+r ${PREFIX}/lib/lib${LIB_NAME}.so.${LIB_VER} chmod a+r ${PREFIX}/lib/lib${LIB_NAME}.so _EOF cat >>uninstall.sh <<_EOF #!/bin/sh rm -f ${PREFIX}/lib/lib${LIB_NAME}.so.${LIB_VER}.0 rm -f ${PREFIX}/lib/lib${LIB_NAME}.so.${LIB_VER} rm -f ${PREFIX}/lib/lib${LIB_NAME}.so _EOF else cat >>install.sh <<_EOF #!/bin/sh [ -f ${PREFIX}/bin/${EXE_NAME} ] && rm -f ${PREFIX}/bin/${EXE_NAME} cp ${OUTPUT_DIR}/${EXE_NAME} ${PREFIX}/bin/${EXE_NAME} _EOF cat >>uninstall.sh <<_EOF #!/bin/sh rm -f ${PREFIX}/bin/${EXE_NAME} _EOF fi echo "done." post_create_makefile [ $? -eq 0 ] || exit 1Pár věcí by šlo určitě vylepšit, ale mně to tak (zatím) vyhovuje. Akorát netuším, jak pobere
RET_VAL=${RET_VAL##*/}
apod. něco jiného než bash.
autoconf
to není tak hrozné, samozřejmě až na ten stokilový configure
u projektů, které mají dohromady 20 KB zdrojáků. :-) Ale automake
už mne tak moc neoslovil, s tím už člověk opravdu trochu ztrácí přehled.
i když pořád lepší než cmake se svýma skrytýma adresářema a ještě větším množstvím balastuMožná jsem zkoušel jiný
cmake
, ale ten můj skryté adresáře netvořil a navíc uměl out-of-source build. Stačí si udělat adresář (třeba build), vejít do něj a pak napsat cmake ..
. Všechen "bordel" zůstane pouze v tom adresáři a neplete se mezi zdrojovými kódy.