groumpf ... - Mot-clé - informatiqueVous pouvez me faire des retours sur twitter denmakesmusic.2023-08-19T08:21:26+02:00urn:md5:5f4edc3aa25c2fe8c2dcc41ed6bc48aeDotclearMidiUnavailableExceptionurn:md5:cecb688b282e6c287014814dce75a3f82023-03-12T19:06:00+01:002023-03-12T19:23:56+01:00groumpfGeneralinformatiquejavaprogrammationsynthétiseur <p>Je viens de me prendre la tête avec ce message retourné par mes applications Java qui utilisent MIDI.
Si j'ouvre Reaper ou Reason, et qu'ensuite je lance une de mes applications Java, j'ai le message :
<code>javax.sound.midi.MidiUnavailableException: There is not enough memory available for this task</code></p>
<p>Ca semble être un problème mémoire mais pas du tout. Cette exception est levée quand le port MIDI que le programme veut ouvrir est déjà ouvert par une autre application.
Je me dit que c'est bizarre quand même de ne pas l'avoir eu avant.
En fait après plusieurs essais il s'avère que cela était du au port USB de mon Kawai MP7. Si j'utilise un port géré par l'interface MAudio, cela ne pose pas de problème. Donc cela doit dépendre du driver associé.
Ca m'a bien pris la tête et explique ce billet créé pour mémoire.</p>L'informatique et les formulairesurn:md5:cfc4924407a030f46760b78356c95d6e2022-07-09T08:44:00+02:002022-07-09T08:44:00+02:00groumpfInternetinformatiqueinternetprogrammation <p>La semaine dernière j'ai suivi une formation sur Angular, le <q>framework</q> de développement d'applications WEB.<br /></p>
<p>A un moment donné est venu le sujet des formulaires. Vous savez les formulaires sont des écrans avec des champs de saisie et un bouton <q>Valider</q>. Cela peut servir à valider une commande par exemple, après avoir entré son nom, son numéro de carte bleue, son adresse etc. Ce sont tout simplement des abstractions informatiques des formulaires papiers.</p>
<p>Et donc les participants de s'extasier (j'exagère un peu) devant les facilités qu'offre Angular pour réaliser les formulaires.</p>
<p>Là je me suis souvenu que dans les années 90 (avant internet oui), j'avais des collègues qui passaient leurs journées à faire des formulaires sur un système qui s'appelait (de mémoire) SQL Forms et qui était proposé par Oracle pour fonctionner directement avec la base de données.
Je relève donc cette anecdote amusante à la formation en soulignant que fonctionnellement on n'avait pas beaucoup progressé puisque le même type de formulaire existait il y a 30 ans. Simplement le système de développement était différent, et je n'étais pas certain qu'il était beaucoup plus difficile comparé à Angular (qui me parait quand même assez complexe).
Que n'avais-je pas dit là !
Ils m'ont assuré que c'était beaucoup mieux maintenant étant donné que le formulaire n'accédait pas directement à la base de données. En gros l'architecture logicielle était mieux, il y avait des interfaces pour séparer les différentes <q>couches</q> etc. Je leur ai fait remarquer que tout cela étaient des considérations d'informaticien et que cela ne concernait pas l'utilisateur mais ils avaient un peu de mal à comprendre.
Ils étaient dans leur monde de développement logiciel, incapable de voir qu'un formulaire des années 90 remplissaient les mêmes fonctions qu'un formulaire des années 2020.</p>
<p>Tout cela pour dire quoi ?</p>
<p>Et bien je pense que l'informatique WEB est dans un égarement profond. Les informaticiens passent leur temps à refaire la roue et c'est particulièrement le cas dans le monde WEB. Ils ont presque oublié que le but de l'informatique est de rendre des services et sont obnubilés par des questions d'architecture, de compétition entre les <q>frameworks</q> (il en existe des dizaines qui font à peu près tous la même chose), d'élégance du code, oui les informaticiens sont des esthètes. Les <q>frameworks</q> deviennent assez vite obsolètes ou subissent une mode qui en fait parfois disparaître certains bien qu'ayant des qualités.</p>
<p>Le fait qu'il faille encore des jours de développement, à se prendre la tête avec des syntaxes compliquées, pour faire des formulaires, choses qui n'est pas si compliqué en soit, est assez symptomatique qu'en 30 ans on n'a pas beaucoup avancé. Et savoir le faire dans un système apporte peu d'aide quand on doit passer à un autre car il faut réapprendre. Il est difficile de capitaliser une expérience donc la durée de développement s'en ressent.</p>
<p>De nos jours, l'apparence de l'informatique donnée aux utilisateurs est beaucoup plus complexe que par exemple le Minitel que tout le monde était à peu près capable d'utiliser. Mais maintenant, les sites WEB sont très complexes et ont tendance à rebuter les utilisateurs qui ne les utilisent qu'occasionnellement.
Cela me fait aussi penser au système 3270 (de mémoire) utilisé dans les banques, entièrement en mode <q>texte</q>, et qui semblait d'un maniement très rapide et efficace, du moins pour les opérateurs de banques mais qui n'étaient pas forcément des informaticiens.</p>
<p>Évidemment, c'est une idée générale, tout cela peut être nuancé.</p>Editeur Matrix-1000 en WEBurn:md5:48a7f435f9679f4bd95ae484845459772016-06-12T15:40:00+02:002016-09-11T09:15:09+02:00groumpfGeneralinformatiqueMatrix-1000programmationsynthétiseur <p>Je suis en train de finaliser un éditeur pour le Matrix-1000 en technologie WEB. Il utilise AngularJS pour l'IHM et l'<a href="https://webaudio.github.io/web-midi-api/">API WEB MIDI</a> pour les fonctions MIDI. Le résultat est plutôt pas mal mais j'ai encore quelques problèmes à régler.
A noter qu'il ne fonctionne que sur Chrome et ses dérivés à cause de l'API MIDI.<br />
Un problème sur lequel je suis tombé c'est l'API MIDI désactive les SYSEX lorsque certains critères de sécurité ne sont pas remplis. La conséquence est que je ne peux pas le déployer sur free car il me faudrait un certificat SSL.<br />
Donc pour le moment il ne peut fonctionner qu'en localhost.
<a href="http://dqueffeulou.free.fr/blog/public/matrix-web.jpg" title="matrix-web"><img src="http://dqueffeulou.free.fr/blog/public/.matrix-web_m.jpg" alt="matrix-web" style="display:block; margin:0 auto;" title="matrix-web, juin 2016" /></a>
<br />
Mise à jour - 26 juin 2016 :<br />
Il est désormais possible de le télécharger <a href="http://dqueffeulou.free.fr/softs/ObieEditorJs/index.php">ici</a>.<br />
Mise à jour - 11 sept 2016 :<br />
Ajout de l'application <a href="http://electron.atom.io/">Electron</a> en Win64.</p>Jeu de la vie 1.1urn:md5:d440c9cb2a4261655263bea3246b70d82016-03-17T09:45:00+01:002016-03-17T11:13:45+01:00groumpfGeneralinformatiquejavaprogrammation <p>J'ai publié une <a href="https://play.google.com/store/apps/details?id=com.dqueffeulou.lifegame">nouvelle version</a> de mon jeu de la vie sur Android.<br />
Cette version permet de dessiner des cellules ou d'en supprimer avec le doigt. On peut désormais partir d'un écran vide. La taille de la gomme peut être modifiée dans les préférences.<br />
Du coup c'est assez amusant de chercher des combinaisons qui durent. J'aime particulièrement les figures symétriques. J'en ai trouvé par hasard une qui boucle sur plusieurs cycles.<br />
Je pense qu'une amélioration future sera de pouvoir sauvegarder l'état courant dans un fichier ou une base de données et de pouvoir les recharger et les exporter.<br />
Une autre amélioration sera de pouvoir zoomer car avec beaucoup de cellules l'édition n'est pas précise.<br />
Afficher une grille permettrait de faciliter le placement des cellules.<br />
Enfin, un undo ne serait pas de trop car cela éviterait de prendre la gomme quand on a placé une cellule au mauvais endroit.
<img src="http://dqueffeulou.free.fr/blog/public/.Screenshot_2016-03-16-20-53-41_m.jpg" alt="Screenshot_2016-03-16-20-53-41.png" style="display:block; margin:0 auto;" title="Screenshot_2016-03-16-20-53-41.png, mar. 2016" /></p>Mise à jour de logicielsurn:md5:52d70abecacbb677e6d0ce2def1afcf42016-03-12T11:03:00+01:002016-03-12T16:57:23+01:00groumpfMusiqueinformatiqueMatrix-1000programmationsynthétiseur <p>J'ai recompilé l'<a href="http://dqueffeulou.free.fr/softs/m1000osx.php">éditeur Matrix-1000 pour OSX</a> en incorporant les modifications de vicktorvos. Du coup tous les paramètres sont sur le même écran comme pour l'éditeur JavaFx. A noter que le bouton DCO2 permet de basculer sur le générateur de bruit qui est exclusif avec le DCO2, chose que je n'avais pas remarquée.<br />
<br />
Sinon j'ai fait des modifications essentiellement cosmétiques sur l'<a href="http://dqueffeulou.free.fr/softs/ObieEditorFx/index.php">éditeur Matrix-1000 JavaFx</a> pour que la fenêtre soit plus petite.<br />
<br />
Je me rend compte que je n'ai pas parlé de ma merveilleuse application Android : <a href="https://play.google.com/store/apps/details?id=com.dqueffeulou.lifegame">Le jeu de la vie</a>. Bon c'est une application hyper simple que j'ai faite pour tester le développement sur Android Studio. En fait c'est un portage d'une application iphone que j'avais faite il y a longtemps sans la publier. Je viens donc de justifier des années après les $25 que j'avais donnés à Google pour le compte développeur.</p>Tron Legacyurn:md5:f961236ec81a923a642b3459539728d42016-02-29T17:59:00+01:002016-02-29T18:33:00+01:00groumpfGeneralcinemainformatique <p>Bon ce film est plutôt plaisant, les trucages sont assez réussis, la musique est super mais il y a des côtés gênants.<br />
Le premier point qui m'a gêné c'est que l'univers dépeint est trop proche du réel. Si je fais une comparaison avec le Tron 1982 dans lequel l'environnement est clairement bizarre, dans Legacy finalement ça ne semble plus si bizarre.<br />
Je vais essayer d'expliquer.<br />
Par exemple dans Tron 1982 les vaisseaux n'ont pas un déplacement d'avion ou d'hélicoptère, c'est comme si les lois de la gravité et de l'aérodynamique n'existaient pas. Et c'est très bien ! Cela donne cet aspect totalement étranger à ce monde.<br />
Par contre dans Legacy les vaisseaux semblent se mouvoir comme des hélicoptères, ils font des virages sur l'angle (pourquoi dans un monde informatique ?). Bref c'est trop commun. Ce que je dis pour les vaisseaux s'applique totalement pour les motos puisque dans Tron 1982 les motos font des angles droits alors que dans Legacy elles font des bêtes virages.<br />
Deuxième exemple c'est la matière. Dans Tron 1982 la matière semble malléable à souhait et ne ressemble à rien de connu alors que dans Legacy elle est beaucoup plus ordinaire. En particulier dans Tron 1982 le grand vaisseau est supprimé morceau par morceau et c'est une scène impressionnante car cela fait penser à quelqu'un qui supprimerait des lignes dans un fichier. Rien de tel dans Legacy.<br />
L'extérieur de la ville aussi n'est pas convaincant dans Legacy puisqu'il contient des montagnes de pierres. Si on fait une analogie avec une mémoire d'ordinateur, si elle n'est pas programmée elle contient soit des 0 soit un bruit de 0 et de 1. Donc pourquoi des montagnes ?<br />
<br />
Dans une scène au début le jeune Flynn est blessé et saigne. Les programmes en déduisent que c'est un concepteur. C'est quand même étrange de saigner pour un corps dématérialisé et immortel. Quel intérêt ?<br />
A la fin il y a Clue qui harangue ses foules de programmes en leur expliquant qu'ils vont envahir le monde réel. Euh ?! Quel besoin a-t-il de convaincre des programmes qui font ce pourquoi ils sont programmés. C'est de l'anthropomorphisme déplacé.<br />
Ce film reprend aussi des scènes de Matrix comme la scène dans le bar avec le gars et sa canne qui est une copie du Nérovingien de Matrix. Cela n'apporte pas grand chose, et c'est même assez pénible.<br />
Et puis il y a le problème de la numérisation. Ben oui le corps de Flynn a été numérisé et introduit dans l'ordi mais il devient quoi son corps réel, il est où ? Quoique dans Tron 1982 il me semble que le corps était désintégré puis réintégré mais dans Legacy ce n'est pas très clair.<br />
Et pourquoi donc l'avatar de Flynn vieillirait dans la grille ? C'est absurde non ? Cela voudrait dire que Flynn a découvert le processus de vieillissement et l'a inclus dans son avatar. Mais qui voudrait avoir un corps qui vieillit quand cela ne dépend uniquement que d'un programme ?<br /></p>
<p>Donc au final un film pas très cohérent (est-ce que cela existe ?) pendant lequel il faut laisser son cerveau au repos sous peine d'être déçu.</p>Chappieurn:md5:240d1ed3deb29a07eb77073c7d9f180c2016-02-16T23:47:00+01:002016-02-16T23:53:52+01:00groumpfGeneralcinemainformatique <p>C'est finalement un film assez intéressant et émouvant bien qu'il soit totalement débile d'un point de vue technique et je ne vais pas faire la liste ici ce serait trop long et je n'en ai pas le courage.<br />
Évidemment, l'émotion est ici une réaction générée par notre anthropomorphisme. Cela rejoint un article que j'ai déjà écrit et dans lequel je déconseille fortement de faire cohabiter sur Terre deux espèces différentes mais de même niveau intellectuel. C'est la guerre assurée.<br />
Il y a un élément du film qui pourrait sembler novateur du moins au cinéma, c'est le transfert d'une conscience artificielle ou non dans un ordinateur pour en prendre le contrôle.<br />
Cette idée n'est évidemment pas nouvelle mais elle m'a rappelé un épisode de Yoko Tsuno : Les 3 soleils de Vinéa.<br />
Dans cet épisode, Yoko rencontre le père de Khany sous la forme d'une mémoire dans un robot. C'est exactement ce qui s'est passé dans Chappie : transférer un cerveau humain dans un ordinateur. La BD date de 1980 donc ce n'est pas tout jeune et à l'époque cela ne me choquait pas le moins du monde. Ce n'est plus le cas maintenant...<br />
Cette idée est aussi reprise dans Tron de 1982 et sa suite Tron Legacy en 2010 sous une forme légèrement différente puisque la conscience n'est pas transférée dans un robot mais s'incarne dans un corps virtuel à l'image du corps réel.<br />
Maintenant que j'y pense il y a une réplique du film Chappie qui m'a vraiment choqué, c'est quand le créateur de l'IA dit à Chappie qu'il ne peut pas transférer sa conscience car en gros l'âme ne se transfère pas. Le gars vient de créer un programme de conscience, donc une suite de 0 et de 1 et dit qu'il ne peut pas la copier ! Il est con ou quoi ? Il faut toujours que les gens mettent Dieu là où il n'est pas nécessaire. Einstein a éliminé l'éther du cosmos car il ne servait à rien. J'aimerai qu'on fasse de même avec Dieu.</p>Voiture auto-pilotéeurn:md5:b867ababf57dcc25e40befe0e3d148df2015-11-07T10:20:00+01:002015-11-09T17:01:45+01:00groumpfGeneralautomobileinformatique <p>Nous n'imaginons pas encore toutes les possibilités offertes par l'avènement des voitures auto-pilotées.<br />
Si dans un futur je l'espère pas trop lointain, ces voitures seront disponibles cela va créer de nouvelles utilisations et un usage totalement nouveau de la voiture. Pour cela il faut évidemment que la responsabilité humaine ne soit pas engagée en cas d'accident sinon autant conduire soi-même.<br />
L'usage standard sera de transporter des personnes d'un endroit à un autre sans intervention humaine à part de dire : "chez mamie" !<br />
Une telle voiture pourrait aussi rouler sans personne à son bord en ayant été programmée ou appelée. Par exemple la voiture pourrait sortir toute seule d'un parking sous-terrain et passer juste devant nous pour nous embarquer. <br />
Elle pourrait aussi être utilisée pour prendre livraison d'un colis en ayant prévenu la destination, il suffirait de laisser le coffre ouvert et hop, elle rentrerait avec le colis. Elle pourrait aller chercher quelqu'un à la gare toute seule etc.<br />
Ce genre d'utilisation s'apparente au taxi et on peut prédire la disparition à terme de la profession de chauffeur. D'ailleurs on peut se demander si ce n'est pas le but final des recherches.<br />
Dans un monde semblable, sera-t-il encore utile de posséder sa propre voiture ?<br />
On peut imaginer un parc de voitures à disposition immédiate. On appelle un taxi par internet en précisant la destination, le nombre de personnes, les bagages, ce qui permet d'allouer la voiture la plus adaptée au trajet qui ne sera pas la même selon que c'est 2 km en ville ou 200 km sur la quatre voies. Ainsi les trajets courts privilégieront des petites voitures électriques.<br />
Les voitures elles-mêmes seraient différentes. Elles n'auraient plus besoin de volant, de pédales, de levier de vitesse, bref de tous les éléments de conduite ce qui dégagerait de la place pour les passagers.<br />
Des économies de carburant pourront être faites car les programmes de conduites seront optimisés pour consommer le moins possible et comme ce sera vrai pour chaque voiture, l'impact sera décuplé.<br />
Il y a aura moins de bouchons car les voitures connaissant l'état de la circulation sur leur parcours adopteront la vitesse la plus adaptée pour éviter les engorgements.
Des économies d'infrastructures seront possibles en supprimant toute la signalisation et en implantant éventuellement des balises. Cela suppose que tous les usagers de la route puissent quand même circuler, je pense aux vélos par exemple. Néanmoins les voitures autonomes sauront prendre en compte les vélos et les piétons, bref tous les usagers qui n'ont pas vraiment besoin de signalisation qui peut être déportée sur un GPS.<br />
Le permis de conduire, les radars, les contrôles routiers, les amendes, les PV deviendraient inutiles. La police et la gendarmerie seraient libérées d'énormément de tâches ingrates et inintéressantes. Elles pourraient se concentrer sur la résolution d'enquêtes plus importantes.<br />
La justice serait aussi débarrassée de nombreuses procédures concernant les accidents de la route (dans le cas idéal ou le nombre d'accidents diminue...) ou les litiges sur les PV.<br />
Évidemment tout le monde n'y trouverait pas son compte sauf à se projeter dans un futur plus lointain où l'automobile individuelle ne serait plus qu'une page de l'histoire.<br />
Le code de la route ne disparaitrait pas mais serait réalisé en tenant en compte des possibilités réelles des voitures. On pourrait imaginer dans ce cas autoriser de faire cohabiter sur l'autoroute des vitesses différentes allant de 100 à 200km/h selon les capacités de la voiture et/ou le prix que le loueur à mis dans la location.<br />
Tout ce système suppose des infrastructures informatiques importantes et que chaque voiture connaisse son environnement immédiat à chaque instant. La vie privée peut être difficile à sauvegarder mais elle est déjà bien entamée. Je ne vois pas trop comment résoudre ces problèmes mais ils ne sont pas nouveaux de toute façon.<br />
<br />
Personnellement je ne trouve plus énormément de plaisir à conduire car ma conduite est désormais axée sur l'économie et le respect des limitations. La voiture ou la moto ne sont amusants que si on peut accélérer et aller à la vitesse qu'on veut, sinon c'est l'ennui assuré. Donc tant qu'à faire des règles très strictes, autant abandonner complètement cette activité qui n'apporte plus que frustration et argent dépensé par les individus et la communauté pour une efficacité limitée.
<br />
Un <a href="http://www.numerama.com/tech/130187-des-bus-electriques-autonomes-francais-testes-en-suisse.html">article</a> qui va dans ce sens.</p>Appleturn:md5:38721a16242c38d7bda0dcbb5c3d4deb2015-10-17T19:31:00+02:002015-12-03T14:41:03+01:00groumpfInternetinformatiqueinternetjavaprogrammation <p>Quand je lis ce <a href="http://www.gwtproject.org/doc/latest/DevGuideSecurity.html" hreflang="en">document</a> de Google sur les problèmes de sécurité avec les applications Web, je me dis que les Applets ont été écartées pour de mauvaises raisons.<br />
Certes je ne suis pas un spécialiste en sécurité mais Google lui-même indique que l'utilisation massive d'AJAX a créé des failles de sécurité qui n'existaient pas avant avec des sites plus classiques. Et Google est un des plus actifs promoteurs des applications AJAX.<br />
Par ailleurs ce qu'ils appellent <q>Same-Origin Policy</q> a été copié de ce qui avait été introduit par les Applets (en quelle année ? 1998 ?). De même le problème d'injection de code par des entrées utilisateurs n'est pas possible en Applets puisque l'application n'est pas faite en HTML/JS/JSON. C'est du Java. On peut difficilement imaginer saisir dans un formulaire du code Java en espérant qu'à l'affichage il va s'exécuter.<br />
Je ne dis pas qu'il n'y a pas de failles dans les Applets mais je pense que ce ne sont pas des failles introduites par un mauvais codage alors qu'en HTML/AJAX/JS c'est le cœur du problème.<br />
En fait on peut considérer que la plupart des sites ont des failles dues à une méconnaissance des problèmes de sécurité.<br />
Bref tout cela me fait dire qu'avec HTML/AJAX/JS on a fait un bon en arrière incroyable en promouvant des technologies qui n'étaient pas adaptées pour faire des applications solides. D'ailleurs le nombre de frameworks qui existent dans ce domaine indique que ces technologies en sont au stade du prototype et que chacun cherche désespérément à combler les lacunes d'un système de développement bancal.<br />
En fait - parenthèse - tout ce temps perdu me donne à penser que la concurrence exacerbée est vraiment un mauvais système. Au contraire une coopération entre les différents acteurs aurait abouti beaucoup plus rapidement (en théorie) à produire les fonctions manquantes sur les systèmes existant, en l’occurrence Java puisque c'est le sujet. L'idéologie des USA nous a entrainé dans des errements dont on n'est pas encore sorti.<br />
Parallèlement Java est depuis longtemps une technologie aboutie et il aurait juste fallu corriger les quelques choses qui n'allaient pas (UI/Swing, le problème du déploiement par exemple) mais des guerres de pouvoir ont sabordé cela.<br />
Quand je vois JavaFX 2, je me dis que si il était sorti en 2000 les choses auraient pu être différentes.<br />
Alors on va me dire qu'avec Java il faut installer une JVM, c'est chiant. C'est vrai mais comment croyez-vous que JavaScript s'exécute ? Avec une VM embarquée comme l'était la JVM dans les premiers navigateurs.<br />
De plus je pense que Java pourrait évoluer pour être modulaire et n'installer dans le navigateur que le strict nécessaire au fur et à mesure des besoins. De même, ne pourrait-on pas imaginer de livrer une application Java entièrement autonome (en fait c'est déjà possible en utilisant des outils payants) ?<br />
Le problème principal étant que les acteurs qui font les navigateurs sont engagés dans une mise à l'écart de Java dans le Web et dans les systèmes car ils veulent tous que le développeur utilise leur framework de développement à l'exclusion de tout autre (Google, Apple, Microsoft). Java étant multi-plateforme il doit être tué.<br />
De la part de Google c'est quand même un peu bizarre étant donné qu'il a <del>volé</del> choisi Java pour en faire le système de développement sur Android. D'ailleurs il n'a pas choisi JavaScript mais Java (tout le monde sait que JavaScript est un très mauvais langage...). De fait on peut considérer qu'il y a désormais deux Java différents qui évoluent de manière indépendante. Cela fractionne encore plus les énergies. <br />
C'est une spécialité de l'informatique de refaire 100 fois les mêmes outils. Il suffit pour s'en convaincre de consulter la <a href="https://fr.wikipedia.org/wiki/Liste_des_langages_de_programmation">liste des langages de programmation</a> sur Wikipedia. Il faut imaginer tout le temps et l'argent dépensé pour créer tous ces langages dont peut-être 10% sont couramment utilisés et encore moins dans l'industrie. Et encore ce ne sont que les langages de programmation. Il y a plein d'autres langages pour tout un tas d'usages tous plus ou moins différents parfois de manière très subtile.<br />
Franchement les différences (je considère uniquement le langage) entre C++, Java, Ruby, Groovy, Python, Scala, C#, JavaScript, Go, Dart, Eiffel etc. justifient-elles de créer un nouveau langage et un nouveau environnement de compilation, d'exécution et de débug ? Ne pourrait-on pas juste améliorer l'existant ? C'est par exemple ce que fait Java 8 en intégrant des nouveautés présentes dans d'autres langages. Mais comme le processus est long, les autres langages ont le temps de prendre une place significative.<br />
Ceci dit, c'est plaisant de découvrir un nouveau langage mais le problème se pose de pouvoir le maitriser pour le mettre en œuvre de manière efficace, sachant que si l'on fait cela on se disperse immanquablement et je ne peux m’empêcher de penser que cela nuit à l'efficacité globale. Une autre façon de voir est de s'inspirer de ce que l'on voit dans d'autres langages pour l'appliquer dans son langage courant. C'est parfois possible mais pas toujours du fait de manques rédhibitoires.<br />
D'ailleurs - une parenthèse - cela me fait penser aux films SF dans lesquels les informaticiens arrivent à télécharger des programmes dans des systèmes dont ils ne savent rien. On imagine donc que le futur n'utilisera qu'un seul système, avec un seul type de langage, un seul type de binaire, un seul type de connexion etc. On branche, ça <q>upload</q> et POUF le programme s'exécute ! Magique. Quand on voit le bordel que c'est actuellement j'ai de la peine à l'imaginer.<br />
Il y a quand même un domaine où Java est très populaire, c'est le domaine des applications serveur, et on peut considérer qu'il ne survit que pour cela. C'est dommage car Java est l'évolution de Smalltalk qui était aussi une plateforme entière de développement aboutie aussi bien client que serveur.<br />
<br />
MAJ: j'étais à l'instant sur un forum de développement Mac et ça parlait de Swift. C'est vrai que j'avais oublié de le citer dans ma liste non exhaustive de langages. Je ne connais pas bien Swift mais il semble qu'il soit plus statique que Objective-C qui est dynamique par nature. En effet la méthode exécutée n'est découverte qu'à l'exécution et non à la compilation. Visiblement Swift corrige cela. Mais alors on peut se demander pourquoi ne pas avoir choisi Java qui est fortement typé ?</p>FS1R (4)urn:md5:3d1187ee31d8da2d88bd00c436d48f072015-05-30T19:33:00+02:002015-05-30T19:33:00+02:00groumpfMusiqueFS1Rinformatiquejavaprogrammationsynthétiseur <p>J'ai mis à disposition une première version de l'éditeur pour le FS1R. Vous pouvez le télécharger à cette adresse :
<a href="http://dqueffeulou.free.fr/softs/FS1REditorFx/" title="FS1REditorFx">FS1REditorFx</a></p>Script Calibreurn:md5:3f662816b4c98e2c02340155a4868e662015-05-15T19:59:00+02:002015-05-15T19:59:00+02:00groumpfLivresinformatiquelivreprogrammation <p>Pour ceux comme moi qui utilisent Calibre pour gérer leur bibliothèque d'ebooks, voici un script qui sert à déterminer l'emplacement de l'eBook dans le système de fichiers du lecteur :</p>
<blockquote><p>program:<br />
firstTag = list_item(field('tags'), 0, ',');<br />
firstLang = list_item(field('languages'), 0, ',');<br />
contains(firstTag, '.*documentation.*',<br />
strcat('doc/', field('title')),<br />
test(firstLang,<br />
strcat(firstLang, '/', field('author_sort'), '/', field('title')),<br /> strcat(field('author_sort'), '/', field('title'))<br /> )<br />
);</p>
</blockquote>
<p>En gros j'ai trois sortes de eBooks : les documentations (étiquette: documentation), les livres en anglais et les livres en français. Je veux que les documentations aillent directement dans un répertoire 'doc', tandis que les livres sont triés par langue.<br />
Ce script n'est sans doute pas parfait, c'est le premier que je fais. A noter que Calibre émet un warning lorsqu'il est validé mais cela fonctionne quand même.</p>FS1R (3)urn:md5:f3c307cb039e492b7c7ea720417bcd812015-04-26T13:34:00+02:002015-04-26T13:34:00+02:00groumpfMusiqueFS1Rinformatiquejavaprogrammationsynthétiseur <p>J'ai commencé à traiter les FSEQ mais c'est vraiment compliqué. Voici un avant-goût :
<a href="http://dqueffeulou.free.fr/blog/public/formant.jpg" title="FS1R FSEQ"><img src="http://dqueffeulou.free.fr/blog/public/.formant_m.jpg" alt="FS1R FSEQ" style="display:block; margin:0 auto;" title="FS1R FSEQ, avr. 2015" /></a>
J'utilise l'API Chart de javafx mais ce n'est pas certain que ce soit la meilleure solution. J'essaye de contrôler la hauteur de chaque point avec la souris.</p>
<p>Sinon j'ai bien avancé sur l'édition des voices :
<a href="http://dqueffeulou.free.fr/blog/public/voice.jpg" title="FS1R voice"><img src="http://dqueffeulou.free.fr/blog/public/.voice_m.jpg" alt="FS1R voice" style="display:block; margin:0 auto;" title="FS1R voice, avr. 2015" /></a>
Je pense qu'il faudrait que j'ajoute un bandeau avec des contrôles de volume ou des "mute" pour tous les opérateurs, que ce soit accessible tout le temps.</p>FS1R (2)urn:md5:d5d219c631ab6b63562183465c623b682015-02-07T19:21:00+01:002015-04-26T12:39:08+02:00groumpfMusiqueFS1Rinformatiquejavaprogrammationsynthétiseur <p>J'ai avancé sur l'éditeur et l'édition des performances est quasi fonctionnelle à part l'édition des effets qui est encore très sommaire. L'ergonomie n'est pas encore terrible, j'ai plein de refactoring à réaliser pour que ce soit vraiment pratique mais il faut que je puisse l'utiliser pour juger de ce qui est bien et de ce que je dois changer.<br />
Avant de faire l'édition des voices, j'aimerais regarder les FSEQ et voir ce que je peux faire là-dessus histoire de faire autre chose que d'aligner des potards.</p>
<p><a href="http://dqueffeulou.free.fr/blog/public/common.jpg" title="FS1R common"><img src="http://dqueffeulou.free.fr/blog/public/.common_m.jpg" alt="FS1R common" style="display:block; margin:0 auto;" title="FS1R common, fév. 2015" /></a></p>
<p><a href="http://dqueffeulou.free.fr/blog/public/effects.jpg" title="FS1R Effects"><img src="http://dqueffeulou.free.fr/blog/public/.effects_m.jpg" alt="FS1R Effects" style="display:block; margin:0 auto;" title="FS1R Effects, fév. 2015" /></a></p>
<p><a href="http://dqueffeulou.free.fr/blog/public/part.jpg" title="FS1R part"><img src="http://dqueffeulou.free.fr/blog/public/.part_m.jpg" alt="FS1R part" style="display:block; margin:0 auto;" title="FS1R part, fév. 2015" /></a></p>FS1R (1)urn:md5:fcbee87ffda1c74ffcb360dcce21af622015-01-26T19:25:00+01:002015-04-26T12:39:22+02:00groumpfMusiqueFS1Rinformatiquejavaprogrammationsynthétiseur <p>J'ai commencé un éditeur pour le Yamaha FS1R. Il est encore un peu limité !</p>
<p><img src="http://dqueffeulou.free.fr/blog/public/.fs1r_m.jpg" alt="FS1R" style="display:block; margin:0 auto;" title="FS1R, janv. 2015" /></p>Windowsurn:md5:f6ffb2735a4182f4008e640a7b8234ea2015-01-04T19:53:00+01:002015-01-26T19:28:18+01:00groumpfGeneralinformatique <p>Ah Windows aime bien donner quelques frayeurs de temps en temps à son utilisateur.<br />
J'ai mis à jour le BIOS de ma carte mère (première fois que je fais cela). Cela s'est bien passé à partir du programme @BIOS depuis Windows, ensuite je reboot et paf, ça ne boot pas. J'ai gambergé un peu pour finalement trouver une option du BIOS qui ne semblait pas correcte d'après les vagues souvenirs que j'en avais : il fallait AHCI et c'était IDE (en fait IDE m'a paru obsolète...). Donc après avoir changé ça, le PC arrive à booter, ouf !<br />
Sauf que juste après il me dit que je dois ré-activer Windows bien que je n'ai pas changé de hardware. Bon finalement je viens de lancer le truc, il se lance, réfléchit un moment et me dit que c'est bon ! Merci encore.<br />
Pffff, que de stress.</p>Et si je passais sur Linux ?urn:md5:39a69b0ad1afaa2eed6b5141588f6a792014-12-07T15:36:00+01:002014-12-07T17:32:30+01:00groumpfGeneralinformatiquejavasynthétiseur <p>Je suis passé de Mac à Windows sans perdre beaucoup de logiciels. Parmi les logiciels que j'ai acheté, je crois que j'ai perdu uniquement Poser. Est-ce que ce serait le cas si je passais sur Linux ?
Voici la liste des logiciels que j'utilise couramment :<br />
Pour Internet :</p>
<ul>
<li>Thunderbird : OK</li>
<li>Firefox OK</li>
<li>Filezilla OK</li>
<li>Putty ssh OK</li>
<li>Pidgin OK</li>
</ul>
<p>Pour la musique :</p>
<ul>
<li>Ableton Live 8 KO</li>
<li>Propellerheads Reason 7.1 KO</li>
<li>Audacity OK</li>
<li>iTunes KO</li>
<li>ObieEditorFx (mon éditeur Matrix-1000 écrit en Java 8) OK</li>
</ul>
<p>Pour l'image 2D :</p>
<ul>
<li>Gimp OK</li>
<li>ArtRage, semble fonctionner avec WINE, ?</li>
<li>Mischief : KO</li>
<li>SketchBook Express KO</li>
<li>driver Wacom pour la Bamboo ?</li>
</ul>
<p>Pour l'image 3D :</p>
<ul>
<li>Shade KO</li>
<li>Hexagon KO</li>
<li>Blender OK</li>
<li>Wings 3D OK</li>
<li>DAZ 3D KO (WINE ?)</li>
<li>Vue 6 KO</li>
<li>Bryce 7 KO</li>
</ul>
<p>Pour la video :</p>
<ul>
<li>VLC OK</li>
</ul>
<p>Pour le développement :</p>
<ul>
<li>Java OK</li>
<li>Netbeans OK</li>
<li>IDEA OK</li>
</ul>
<p>Pour les ebooks :</p>
<ul>
<li>Calibre OK</li>
</ul>
<p>Pour les photos :</p>
<ul>
<li>Galerie de photo Windows KO</li>
<li>Rawtherapee OK</li>
<li>driver RAW pour mon Pentax ?</li>
</ul>
<p>Pour le système :</p>
<ul>
<li>FreeFileSync OK</li>
</ul>
<p>Les jeux :</p>
<ul>
<li>XPlane OK</li>
<li>driver pour mon joystick Cyborg machin ?</li>
</ul>
<p>Finalement les domaines les plus touchés sont la musique et la 3D. Pour la 3D ce n'est pas bloquant car j'en fait assez peu. Par contre pour la musique c'est vraiment bloquant. Une solution serait de passer sur <a href="https://www.bitwig.com">BitWig</a> mais je perdrais énormément de plugins VST dont certains payants (Zebra, Kuassa, Sampletank). En fait je ne sais pas si les plugins VST Windows fonctionnent sur Linux. Cela suppose aussi de faire une croix sur l'investissement que représente Live et Reason, ce qui n'est pas réjouissant.<br />
Il faudrait aussi trouver un remplaçant pour itunes mais ça doit exister à condition que je convertisse les morceaux achetés en MP3 ou autre. Heureusement je n'en ai pas beaucoup.<br />
<br />
Conclusion :<br />
Je ne pense pas que Linux attirera beaucoup les gens tant que les logiciels commerciaux ne fonctionneront que sur Mac/Windows. Cela suppose que les éditeurs fassent l'effort de choisir des plateformes de développement qui le permettent. A ce titre Bitwig est intéressant car il est écrit en Java pour ce qui est de la GUI et en C pour l'audio. C'est vraiment remarquable et cela montre que Java est une plateforme sérieuse pas uniquement réservée aux serveurs.</p>ObieEditorFx Matrix-1000urn:md5:d8079ec725bc5847778b07234896d3d22014-11-02T16:40:00+01:002015-04-26T12:39:41+02:00groumpfMusiqueinformatiquejavaMatrix-1000programmationsynthétiseur <p>J'ai terminé une première version de l'éditeur Java 8 pour le Matrix-1000. J'ai réussi à caser tous les paramètres sur une page ce qui était une condition sine qua non. En tout cas je le trouve beaucoup plus beau et plus ergonomique que celui de JSynthLib, sans me vanter. Bon c'est vrai j'ai honteusement copié le look des potentiomètres d'Ableton Live, j'avoue, comme ça je ne suis pas dépaysé ;)<br />
Vous pouvez le télécharger <a href="http://dqueffeulou.free.fr/softs/ObieEditorFx/" hreflang="fr" title="ObieEditorFx">ici</a>.
En voici un aperçu :
<a href="http://dqueffeulou.free.fr/blog/public/obieeditorfx.jpg" title="ObieEditorFx"><img src="http://dqueffeulou.free.fr/blog/public/.obieeditorfx_m.jpg" alt="ObieEditorFx" style="display:block; margin:0 auto;" title="ObieEditorFx, nov. 2014" /></a></p>Preferencesurn:md5:5ec9a196f68a82abbf063b69e7a767ce2014-10-26T16:42:00+01:002014-10-26T16:44:29+01:00groumpfGeneralinformatiquejavaprogrammation <p>Je me demandais comment gérer les préférences en Java de manière transparente par rapport au système, et bien en fait c'est déjà dans le JDK en ce depuis la version 1.4 !<br />
C'est la classe <code>java.util.prefs.Preferences</code> qui gère cela.<br />
Voila ce que c'est que d'avoir fait des logiciels serveurs pendant des années, il y a des classes dont je n'ai aucune connaissance.</p>Optionalurn:md5:8bffdfeb87ad755aef1bc68177371e852014-10-26T16:31:00+01:002015-03-06T19:59:05+01:00groumpfGeneralinformatiquejavaprogrammation <p>Je viens de m'apercevoir que le <strong>JDK 8</strong> contient la classe <code>Optional</code> qui sert à contenir une valeur potentiellement absente.<br />
Habituellement on retourne <code>null</code> pour signifier l'absence de valeur. Néanmoins cela peut provoquer des NPE plus tard dans le code. <br />
Je n'étais pas hyper convaincu de l'intérêt de <code>Optional</code>, mais je pense que c'est quand même mieux de l'utiliser pour plusieurs raisons :</p>
<ol>
<li>le fait que la méthode peut ne pas fournir de valeur est indiqué dans sa signature</li>
<li>l'interface est claire : <code>isPresent</code> et <code>get</code></li>
<li>le get lève <code>NoSuchElementException</code></li>
</ol>
<pre></pre>
<p>Le type de retour indique la possibilité de ne pas avoir de valeur alors qu'avec une méthode qui retourne <code>null</code> il faut consulter la javadoc. Ainsi si on prend l'habitude de tester <code>isPresent</code> avant de l'utiliser, pas de problème. Mais même si on appelle <code>get</code> sur un Optional vide on à l'exception. En fait il est préférable d'utiliser la méthode <code>ifPresent</code> comme indiqué sur la page Oracle.<br />
Évidemment cela suppose de ne pas transmettre un <code>Optional</code> en paramètre car là il me semble qu'on retombe dans les inconvénients de transmettre une valeur <code>null</code>. Je pense qu'il faut appeler <code>isPresent</code> et <code>get</code> immédiatement après le retour de méthode, ainsi si il y a un problème il est localisé au plus près de la source.</p>
<p><a href="http://www.oracle.com/technetwork/articles/java/java8-optional-2175753.html" hreflang="en">Voir aussi</a></p>Matrix 1000urn:md5:2c15b832589cef53d4ea3f3f9aff7b982014-10-11T20:32:00+02:002014-10-11T20:32:00+02:00groumpfMusiqueinformatiqueMatrix-1000synthétiseur <p>Le Matrix est vieux synthétiseur analogique que j'ai le plaisir de posséder. Malgré toutes ses qualités, il ne permet pas d'éditer directement les sons.<br />
Dernièrement une personne m'a remercié d'avoir fait un éditeur pour Mac en m'envoyant une EPROM qui corrige certains bugs du synthé. C'est assez extraordinaire le travail des passionnés qui permet de mettre à jour des appareils très vieux mais qui continuent de fonctionner néanmoins. <br />
Du coup, je me suis reposé la question de l'éditeur pour ce Matrix car maintenant que je suis sur Windows, comble de l'ironie je ne peux plus utiliser l'éditeur que j'avais fait pour Mac.<br />
J'ai donc décidé d'en faire un nouveau en JavaFX. Je ne suis pas encore très avancé mais voici une image de la chose :
<a href="http://dqueffeulou.free.fr/blog/public/Obie.jpg" title="Obie.jpg"><img src="http://dqueffeulou.free.fr/blog/public/.Obie_m.jpg" alt="Obie.jpg" style="display:block; margin:0 auto;" title="Obie.jpg, oct. 2014" /></a></p>