mercredi 23 juillet 2014
Test dir var (eval shell)
Test if the given variable contains a valid directory. If not, exit. (This uses the eval function of the shell)
testdirvar () {
tmp=$1
if [ -d "${!tmp}" ] ; then
echo "${tmp}=${!tmp} (variable ${tmp}: directory exists)"
else
echo "!!! ${tmp}=${!tmp} is not a directory (variable ${tmp}) !!!"
exit
fi
}
dimanche 20 octobre 2013
Disque dur externe NTFS sous Mac OS X
Utiliser un disque dur externe NTFS sous Mac OS X
Il existe plusieurs solution. Ayant déjà configuré les macports puisque je développe un peu, j'ai choisi celle ci, qui consiste, une fois installé fuxe4x et ntfs-3g
sudo port update
sudo port install fuse4x ntfs-3g
Fuse4x + NTFS-3G
sauver le fichier :
changer les droits d'exécution sur le script que l'on va créer :
créer le nouveau script ainsi :
Je n'ai pas encore eu le temps de voir si un `id -u` et `id -g` résolvait la question, mais il y a des chances que ce soit exécuté par root donc ça ne changerait rien ... :-/
Source : Description des autres solutions & original de celle-ci : http://fernandofig.wordpress.com/2011/08/08/ntfs-write-support-on-osx-lion-with-ntfs-3g-f/
Etape d'après : faire la même chose pour mes disques ext4 & ext3.
Il existe plusieurs solution. Ayant déjà configuré les macports puisque je développe un peu, j'ai choisi celle ci, qui consiste, une fois installé fuxe4x et ntfs-3g
sudo port update
sudo port install fuse4x ntfs-3g
Fuse4x + NTFS-3G
sauver le fichier :
sudo mv /sbin/mount_ntfs /sbin/mount_ntfs.orig
changer les droits d'exécution sur le script que l'on va créer :
sudo touch /sbin/mount_ntfs sudo chmod 0755 /sbin/mount_ntfs sudo chown 0:0 /sbin/mount_ntfs sudo emacs /sbin/mount_ntfs
#!/bin/bash VOLUME_NAME="${@:$#}" VOLUME_NAME=${VOLUME_NAME#/Volumes/} USER_ID=501 GROUP_ID=20 TIMEOUT=20 if [ `/usr/bin/stat -f "%u" /dev/console` -eq 0 ]; then USERNAME=`/usr/bin/defaults read /library/preferences/com.apple.loginwindow | /usr/bin/grep autoLoginUser | /usr/bin/awk '{ print $3 }' | /usr/bin/sed 's/;//'` if [ "$USERNAME" = "" ]; then until [ `stat -f "%u" /dev/console` -ne 0 ] || [ $TIMEOUT -eq 0 ]; do sleep 1 let TIMEOUT-- done if [ $TIMEOUT -ne 0 ]; then USER_ID=`/usr/bin/stat -f "%u" /dev/console` GROUP_ID=`/usr/bin/stat -f "%g" /dev/console` fi else USER_ID=`/usr/bin/id -u $USERNAME` GROUP_ID=`/usr/bin/id -g $USERNAME` fi else USER_ID=`/usr/bin/stat -f "%u" /dev/console` GROUP_ID=`/usr/bin/stat -f "%g" /dev/console` fi /opt/local/bin/ntfs-3g \ -o volname="${VOLUME_NAME}" \ -o local \ -o negative_vncache \ -o auto_xattr \ -o auto_cache \ -o noatime \ -o windows_names \ -o user_xattr \ -o inherit \ -o uid=$USER_ID \ -o gid=$GROUP_ID \ -o allow_other \ "$@" &> /var/log/ntfsmnt.log exit $?;
Ca fonctionne plutôt bien. Mais vous noterez en particulier le problème posé par ce script en cas de multi-users sur la mac.
Je n'ai pas encore eu le temps de voir si un `id -u` et `id -g` résolvait la question, mais il y a des chances que ce soit exécuté par root donc ça ne changerait rien ... :-/
Source : Description des autres solutions & original de celle-ci : http://fernandofig.wordpress.com/2011/08/08/ntfs-write-support-on-osx-lion-with-ntfs-3g-f/
Etape d'après : faire la même chose pour mes disques ext4 & ext3.
samedi 11 mai 2013
mac scanner
Perso, j'utilise "xsane" installé via macports.
Il y a une version MacOSX précompilée ici :
http://www.sane-project.org/source.html
Il semble que tu puisses également en installer une version alternative :
http://www.macupdate.com/app/mac/27505/twain-sane
Perso, j'avais déjà installé les macports :
http://www.macports.org/
http://www.macports.org/
donc j'ai simplement utlisé la procédure d'installation standard pour ces adaptations de paquets linux pour mac:
ports install xsane
mercredi 27 mars 2013
3D modeling, some linux links
0 ) How I printed the first models this weekend
(mac OSX, so I could use sketchup...)http://dailycmd.blogspot.fr/2013/03/3d-printing.html
1 ) I already tried
http://www.openscad.org/
http://www.makerbot.com/blog/2011/01/19/openscad-basics-the-setup/
http://edutechwiki.unige.ch/en/OpenScad_beginners_tutorial
http://repraprip.blogspot.fr/2011/05/inkscape-to-openscad-dxf-tutorial.html
2 ) other soft doing the same kind of thing (CAD)
http://assimp.sourceforge.net/main_features_formats.html
http://www.blender.org/
http://en.wikibooks.org/wiki/Blender_3D:_Noob_to_Pro
http://blendernewbies.blogspot.fr/
http://brlcad.org/wiki/Overview
http://sourceforge.net/projects/free-cad/
http://www.sweethome3d.com/
http://www.artofillusion.org/
http://www.k-3d.org/
http://konstruktor.influx.kr/
http://www.ldraw.org/
http://www.gcad3d.org/
http://sourceforge.net/projects/varkon/
3 ) Lists of comparable softwares for 3D modeling / CAD
http://reprap.org/wiki/Useful_Software_Packages
CAD :
http://reprap.org/wiki/Useful_Software_Packages#Open-source_software
To deal with STL files :
http://reprap.org/wiki/Useful_Software_Packages#Open-source_software_2
http://www.techdrivein.com/2011/08/8-best-cad-apps-for-linux.html
... so if wine+sketchup doesn't work, there are plenty of other options!
Labels:
3Dmodeling,
3Dprinting,
blender,
CAD,
linux,
openscad,
sketchup,
stl
samedi 23 mars 2013
.emacs
My .emacs file is usually :
;; .emacs
;;; uncomment this line to disable loading of "default.el" at startup
(setq inhibit-default-init 1)
;; Set your term type to vt100
; (load "term/vt100")
;; To change the font size under X.
; (set-default-font "9x15")
(setq inhibit-splash-screen t)
;; Remove toobar
(tool-bar-mode 0)
;(menu-bar-mode nil)
;; Color feedback
(global-font-lock-mode t)
;; Visual feedback on selections
(setq transient-mark-mode t)
;; I always want a newline at the end of files
(setq require-final-newline t)
;; And please, put me the cursor where I was
(load-library "saveplace")
(setq-default save-place t)
;; When I'm wrinting text, cut my lines (default : 70)
(add-hook 'text-mode-hook 'turn-on-auto-fill)
; (setq fill-column 80)
;; Disable anoying audio-beep
(setq visible-bell t)
;; Support Wheel Mouse Scrolling
(mouse-wheel-mode t)
;; Kill the whole line (including '\n') when the cursor in col 0
;(setq kill-whole-line t)
;; Window title
(setq frame-title-format '(buffer-file-name "%b [%f]" "%b"))
;; Show line-number and column-number in the mode line
(line-number-mode t)
(column-number-mode t)
;; See current buffer's path in the mode line
(set-default 'mode-line-buffer-identification
'(buffer-file-name ("%f") ("%b")))
;; Aliases
;(define-key global-map "\C-Menu" 'mouse-buffer-menu)
(define-key global-map "\M-g" 'goto-line)
(define-key global-map "\M-r" 're-search-forward)
;; Modes d'accentuation é
;(setq iso-accents-mode t)
;(iso-accents-mode t)
;(iso-accents-customize "french")
;(iso-accents-customize)
;; Licence 3
(setq auto-mode-alist
(cons '("\\.hbk\\'" .tex-mode)
(cons '("\\.bk\\'" .tex-mode)
(cons '("\\.a[d1-9][bs]\\'" ada-mode)
auto-mode-alist))))
(setq load-path (append load-path (list "~/.emacs.d/")))
;; Promela mode (M2)
(autoload 'promela-mode "promela-mode" "PROMELA mode" nil t)
(setq auto-mode-alist
(append
(list (cons "\\.promela$" 'promela-mode)
(cons "\\.spin$" 'promela-mode)
(cons "\\.pml$" 'promela-mode)
;; (cons "\\.other-extensions$" 'promela-mode)
(cons "\\.php5$" 'php-mode)
)
auto-mode-alist))
;; Lua editing mode
(setq auto-mode-alist (cons '("\\.lua$" . lua-mode) auto-mode-alist))
(autoload 'lua-mode "lua-mode" "Lua editing mode." t)
(setq load-path (append load-path (list "~/.emacs.d/")))
;; ;; MetaScribe Files : projet RAAR,
;; (load "/home/cm/.emacs.d/metascribe-msf-mode.el")
;; (load "/home/cm/.emacs.d/metascribe-msm-mode.el")
;; (load "/home/cm/.emacs.d/metascribe-mssm-mode.el")
;; (load "/home/cm/.emacs.d/metascribe-msst-mode.el")
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(case-fold-search t)
'(current-language-environment "UTF-8")
'(default-input-method "rfc1345")
'(global-font-lock-mode t nil (font-lock))
'(inhibit-startup-screen t)
'(save-place t nil (saveplace))
'(text-mode-hook (quote (turn-on-auto-fill text-mode-hook-identify)))
'(transient-mark-mode t))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(default ((t (:inherit nil :stipple nil :background "white" :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 90 :width normal :foundry "unknown" :family "DejaVu Sans Mono")))))
;;(add-to-list 'load-path "/path/to/highlight-symbol")
;; Raccourcis claviers
(global-set-key [f4] 'goto-line)
(global-set-key [f5] 'compile)
(global-set-key [f6] 'comment-region)
(global-set-key [f7] 'uncomment-region)
(global-set-key [f8] 'flyspell-mode)
;; (require 'highlight-symbol)
;; (global-set-key [(control f3)] 'highlight-symbol-at-point)
;; (global-set-key [f3] 'highlight-symbol-next)
;; (global-set-key [(shift f3)] 'highlight-symbol-prev)
;; (global-set-key [(meta f3)] 'highlight-symbol-prev)
;; .emacs
;;; uncomment this line to disable loading of "default.el" at startup
(setq inhibit-default-init 1)
;; Set your term type to vt100
; (load "term/vt100")
;; To change the font size under X.
; (set-default-font "9x15")
(setq inhibit-splash-screen t)
;; Remove toobar
(tool-bar-mode 0)
;(menu-bar-mode nil)
;; Color feedback
(global-font-lock-mode t)
;; Visual feedback on selections
(setq transient-mark-mode t)
;; I always want a newline at the end of files
(setq require-final-newline t)
;; And please, put me the cursor where I was
(load-library "saveplace")
(setq-default save-place t)
;; When I'm wrinting text, cut my lines (default : 70)
(add-hook 'text-mode-hook 'turn-on-auto-fill)
; (setq fill-column 80)
;; Disable anoying audio-beep
(setq visible-bell t)
;; Support Wheel Mouse Scrolling
(mouse-wheel-mode t)
;; Kill the whole line (including '\n') when the cursor in col 0
;(setq kill-whole-line t)
;; Window title
(setq frame-title-format '(buffer-file-name "%b [%f]" "%b"))
;; Show line-number and column-number in the mode line
(line-number-mode t)
(column-number-mode t)
;; See current buffer's path in the mode line
(set-default 'mode-line-buffer-identification
'(buffer-file-name ("%f") ("%b")))
;; Aliases
;(define-key global-map "\C-Menu" 'mouse-buffer-menu)
(define-key global-map "\M-g" 'goto-line)
(define-key global-map "\M-r" 're-search-forward)
;; Modes d'accentuation é
;(setq iso-accents-mode t)
;(iso-accents-mode t)
;(iso-accents-customize "french")
;(iso-accents-customize)
;; Licence 3
(setq auto-mode-alist
(cons '("\\.hbk\\'" .tex-mode)
(cons '("\\.bk\\'" .tex-mode)
(cons '("\\.a[d1-9][bs]\\'" ada-mode)
auto-mode-alist))))
(setq load-path (append load-path (list "~/.emacs.d/")))
;; Promela mode (M2)
(autoload 'promela-mode "promela-mode" "PROMELA mode" nil t)
(setq auto-mode-alist
(append
(list (cons "\\.promela$" 'promela-mode)
(cons "\\.spin$" 'promela-mode)
(cons "\\.pml$" 'promela-mode)
;; (cons "\\.other-extensions$" 'promela-mode)
(cons "\\.php5$" 'php-mode)
)
auto-mode-alist))
;; Lua editing mode
(setq auto-mode-alist (cons '("\\.lua$" . lua-mode) auto-mode-alist))
(autoload 'lua-mode "lua-mode" "Lua editing mode." t)
(setq load-path (append load-path (list "~/.emacs.d/")))
;; ;; MetaScribe Files : projet RAAR,
;; (load "/home/cm/.emacs.d/metascribe-msf-mode.el")
;; (load "/home/cm/.emacs.d/metascribe-msm-mode.el")
;; (load "/home/cm/.emacs.d/metascribe-mssm-mode.el")
;; (load "/home/cm/.emacs.d/metascribe-msst-mode.el")
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(case-fold-search t)
'(current-language-environment "UTF-8")
'(default-input-method "rfc1345")
'(global-font-lock-mode t nil (font-lock))
'(inhibit-startup-screen t)
'(save-place t nil (saveplace))
'(text-mode-hook (quote (turn-on-auto-fill text-mode-hook-identify)))
'(transient-mark-mode t))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(default ((t (:inherit nil :stipple nil :background "white" :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 90 :width normal :foundry "unknown" :family "DejaVu Sans Mono")))))
;;(add-to-list 'load-path "/path/to/highlight-symbol")
;; Raccourcis claviers
(global-set-key [f4] 'goto-line)
(global-set-key [f5] 'compile)
(global-set-key [f6] 'comment-region)
(global-set-key [f7] 'uncomment-region)
(global-set-key [f8] 'flyspell-mode)
;; (require 'highlight-symbol)
;; (global-set-key [(control f3)] 'highlight-symbol-at-point)
;; (global-set-key [f3] 'highlight-symbol-next)
;; (global-set-key [(shift f3)] 'highlight-symbol-prev)
;; (global-set-key [(meta f3)] 'highlight-symbol-prev)
3D printing
I recently had to test a 3D printer out of the box.
After a few hours looking for the right open-source tools, I found a proper process to make things !
NB 0 : Inkscape, DXF files,
I had no luck with Inkscape and the dxf file format so far. Converting it to a stl file seems complicated (and the inkscape plugin supposed to help doing so did not install here).
I had some troubles trying to import dxf files in an openscad code, and since I could find a proper tool to edit dxf files so far, this is still in standby.
Using a MacOSX system, I had to chmod the plugin directory, or it wouldn't install
sudo chmod 777 /Library/Application\ Support/Google\ SketchUp\ 8/SketchUp/plugins/
Sketchup is pretty easy to use. Great GUI compared to the other tools I could find. Great tool for creating and visualising 3D models. A lot of tutorials are available.
sketchup http://www.sketchup.com/
sketchup STL plugin https://github.com/SketchUp/sketchup-stl
sketchup developer tools (not tested yet) https://github.com/SketchUp/sketchup-developer-tools
BE CAREFUL : you need to compile the file before converting it to STL. The rendered image is not necesarily coherent with what's in the cache of OpenSCAD, you might have suprises once printing (I was about to print something twice the size I needed it for example, the replicatorg visualisation shown me at the next step was somewhat too big.)
http://en.wikibooks.org/wiki/OpenSCAD_User_Manual
Useful to connect to the printer, or to write to the memory card. You first have to convert the STL file to GCODE, and then you can either print the commands to a memory card (S3G files), or send the commands directly to the printer.
There seems to be a command line interface for replicatorg, but I didn't had time to check it for now.
I suggest you to create an account. At least, it helps me keeping track of the good and interesting stuff (I have to admit there is also plenty of junk in the models... )
After a few hours looking for the right open-source tools, I found a proper process to make things !
- Draw something with Sketchup (easier, .skt files) or OpenSCAD (funnier, .scad files), or find a model on Thingiverse.com (complete models and very useful scad libraries can be found there).
- Export to STL format.
- Open ReplicatorG
- Generate gcode
- send to the printer (via memory card or USB)
NB 0 : Inkscape, DXF files,
I had no luck with Inkscape and the dxf file format so far. Converting it to a stl file seems complicated (and the inkscape plugin supposed to help doing so did not install here).
I had some troubles trying to import dxf files in an openscad code, and since I could find a proper tool to edit dxf files so far, this is still in standby.
Sketchup
Be careful : Sketchup NEEDS the STL export plugin.Using a MacOSX system, I had to chmod the plugin directory, or it wouldn't install
sudo chmod 777 /Library/Application\ Support/Google\ SketchUp\ 8/SketchUp/plugins/
Sketchup is pretty easy to use. Great GUI compared to the other tools I could find. Great tool for creating and visualising 3D models. A lot of tutorials are available.
sketchup http://www.sketchup.com/
sketchup STL plugin https://github.com/SketchUp/sketchup-stl
sketchup developer tools (not tested yet) https://github.com/SketchUp/sketchup-developer-tools
OpenSCAD
It can import (but doesn't seem to be able to convert) your STL files (and DXF ? cf. NB 0), but it's easy to code in SCAD. OpenSCAD editor allows you to view and export to various formats.BE CAREFUL : you need to compile the file before converting it to STL. The rendered image is not necesarily coherent with what's in the cache of OpenSCAD, you might have suprises once printing (I was about to print something twice the size I needed it for example, the replicatorg visualisation shown me at the next step was somewhat too big.)
http://en.wikibooks.org/wiki/OpenSCAD_User_Manual
ReplicatorG
Be sure to have the right file description for your printer.Useful to connect to the printer, or to write to the memory card. You first have to convert the STL file to GCODE, and then you can either print the commands to a memory card (S3G files), or send the commands directly to the printer.
There seems to be a command line interface for replicatorg, but I didn't had time to check it for now.
replicatorg --nogui
replicatorG https://github.com/haldean/ReplicatorG
Thingiverse.com
Nowadays, it seems to be the best platform around for sharing 3D models. A lot of them are freely available, let's hope it stays like that ! The interface even allows you to modify some customizable models, but I found it faster to just download them and recalculate them on my machine.I suggest you to create an account. At least, it helps me keeping track of the good and interesting stuff (I have to admit there is also plenty of junk in the models... )
Labels:
3Dprinting,
dxf,
gcode,
inkscape,
openscad,
replicatorg,
scad,
sketchup,
stl,
thingiverse.com
lundi 25 février 2013
Reusing SSH Connection
SOURCE : http://sshmenu.sourceforge.net/articles/transparent-mulithop.html
"The transparent multi-hop connections can be very useful but you may find that it takes a second or two to establish each connection. This delay can become annoying if it happens a lot (e.g.: every time you save a file from the text editor).
The good news is that if you can configure SSH to reuse an existing connection. This means that for example if you have an SSH shell session running then a new connection for SCP can skip the connection setup phase. Two steps are required:
First, you must create a directory (or 'folder') which SSH will use to keep track of established connections:
mkdir ~/.ssh/tmpNext, add these two lines at the start of your ~/.ssh/config (make sure to use your username in place of 'YOUR-NAME'):
ControlMaster auto ControlPath /home/YOUR-NAME/.ssh/tmp/%h_%p_%r
As you can see, a small investment in time setting up your SSH configuration can pay back dividends in convenience."
vendredi 8 février 2013
SVN backup repository with history
Copier toutes l'historique d'un repository SVN auquel vous avez accès (en lecture),
mais pas les droits d'administration :
svnadmin create localrepos emacs localrepos/hooks/pre-revprop-change # make it 'exit 0' chmod +x localrepos/hooks/pre-revprop-change svnsync init --username USERNAME file:///path/to/localrepos https://myproject.googlecode.com/svn Copied properties for revision 0. svnsync sync --username USERNAME file:///path/to/localrepos
Source : http://code.google.com/p/support/wiki/SubversionFAQ#How_do_I_download_my_Subversion_history?
Donc :
$ svnadmin creat localrepos
$ cat > localrepos/hooks/pre-revprop-change
#! /bin/bash
exit 0
$ chmod a+x localrepos/hooks/pre-revprop-change
$ svnsync init --username USERNAME file:///NEWREPO https://OLDREPO
Copied properties for revision 0.
$ svnsync sync --username USERNAME file:///NEWREPO
[...copie de toutes les révisions...]
Sur la machine où j'ai copié l'historique, j'ai du utiliser une feinte :$ svnadmin setuuid UUID-OLDREPO
Puis, pour changer les "checkouts" de source, svn switch :$ svn switch --relocate https://OLDREPO svn+ssh://NEWREPO
Et voilà !
PS : si vous avez les accès svnadmin sur les deux machines, il y a plus simple comme solution.
http://particul.es/blog/index.php?post/Reprendre-un-projet-%3A-svn-tips-pour-changer-l-url-du-d%C3%A9pot
lundi 4 février 2013
Ext4 (non crypté) macosx
sudo fuse-ext2 /dev/disk2s1 /Volumes/elem/ -o force
Avec :
http://osxfuse.github.com/
Avec :
http://osxfuse.github.com/
dimanche 27 janvier 2013
PDF reduce size of file
Pour réduire la taille d'un pdf, en utilisant ghostscript :
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=OUT.pdf CV.pdf
Source : http://www.fiat-tux.fr/fr/2010/12/reduire-la-taille-dun-pdf/
Labels:
command,
commandline,
ghostscript,
gs,
latex,
pdf,
size
Inscription à :
Articles (Atom)