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 :
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
  
créer le nouveau script ainsi :
#!/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/
donc j'ai simplement utlisé la procédure d'installation standard pour ces adaptations de paquets linux pour mac:
ports install xsane

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)

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 !
  1. 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).
  2. Export to STL format.
  3. Open ReplicatorG
  4. Generate gcode
  5. 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... )







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/tmp
Next, 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/

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/