Posts
UnitInfo and Punk Released
Available on the Software page. Huge thanks to Martin for the graphics and UI design!
Posts
Software Warranty
I find it disturbing that most F/OSS programs have a big disclaimer about not having any warranty. It leaves the impression that closed commercial programs do, which 99,99% of time isn’t the case. :)
Posts
Replacing Apple's PHP
Needed to get gd2 support so thought why not as well update to latest 4.x PHP:
For JPG support, you’ll ned libjpeg which won’t compile directly. From the instructions here I found that you should simply:
> export MACOSX_DEPLOYMENT_TARGET=10.4 > ln -s `which glibtool` ./libtool > cp /usr/share/libtool/config.sub . > cp /usr/share/libtool/config.guess . then just “configure –enable-shared” etc
LIBPNG
>curl -O http://surfnet.dl.sourceforge.net/sourceforge/libpng/libpng-1.2.12.tar.gz Don’t bother with the no-config option, it can’t find ZLIB.
Posts
What's SourceCache?
Working with different tools in OS X, you’ll often notice these paths show up in console.log: /SourceCache/JavaScriptCore/JavaScriptCore-418.3/bindings/objc/WebScriptObject.mm /SourceCache/apache_mod_php/apache_mod_php-18.4/php/configure
What are they? My guess is they’re the development environment directories at Apple.
Posts
KDX MacUnix
Copy app to /Applications/KDXServer1600, try and run it. Define shares and link folders if necessary:
ln -s /my/shared/folder /Applications/KDXServer1600/Bases/Default/Downloads.
Create a LaunchDaemon (from haxial.com):
sudo nano /Library/LaunchDaemons/com.haxial.kdxserver.plist
<?xml version=“1.0” encoding=“UTF-8”?> <!DOCTYPE plist PUBLIC “-//Apple Computer//DTD PLIST 1.0//EN” “http://www.apple.com/DTDs/PropertyList-1.0.dtd"> Label com.haxial.kdxerver ProgramArguments /Applications/KDXServer1600/KDXServer.command –bkgnd –nohup RunAtLoad
Load the daemon: $ launchctl load -w /Library/LaunchDaemons/com.haxial.kdxserver.plist $ launchctl start com.haxial.kdxserver
http://developer.apple.com/macosx/launchd.html man 5 launchd.plist
Posts
A Better Way
I was really excited about the idea of making a widget that’d ping servers. Finally some use for Dashboard. I was already running GeekTool, but thanks to pea, discovered this. Just add a shell console with this as the contents: “ping -qo address” and set some icons. Perfect!
Posts
When Cron Gets Out of Hands
I noticed cron had been churning away at 82% CPU for the past 140 hours (!). sc_usage and fs_usage came up empty (with the latter crashing) - so did ktrace. Remembering that “crontab -e -u someuser” hung on “Installing new crontab”, I checked the tabs dir for any temp files. There were many of them. Ultimately, this seemed to help:
$ rm -rf /var/cron/tabs/tmp.* $ launchctl stop com.vix.cron
Back to using just /etc/crontab!
Posts
pidof
Here’s one way of recreating that handy utility. I’m assuming that the utility is always run after the program we’re looking for, so it has a smaller PID
fiBook:~ filipp$ ps A | grep something | grep -v grep | awk '{print $1;}'
Posts
MacBook Memory Config Benchmarks
Using XBench and CineBench, it’s apparent that MacBook’s are in fact faster when using two DIMMs of the same size than using a single bigger DIMM. The configuration difference seems to have the biggest impact in graphics performance. Here’s a link to the XBench comparison.
For reference, here’s my PowerBook CineBench 9.5 results:
Processor : 1,5Ghz PB G4 1,25GB RAM MHz : 1500 Number of CPUs : 1 Operating System : 10.
Posts
Repair Permissions != Chumbug
Contrary to popular belief, Disk Utility’s Repair Permissions function can be very helpful. Here’s an example:
Software Update wouldn’t work (“There were errors bla-bla-bla). Installing from PKG gave a better error (checking from install log) something about broken DiscRecording Frameworks. Repair Permissions had this to say:
Symbolic link ./System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CFNetwork.framework/Versions/Current->A repaired Symbolic link ./System/Library/Frameworks/DVDPlayback.framework/Versions/Current->A repaired Symbolic link ./System/Library/Frameworks/DiscRecording.framework/DiscRecording->Versions/Current/DiscRecording repaired Symbolic link ./System/Library/Frameworks/DiscRecording.framework/Frameworks->Versions/Current/Frameworks repaired Symbolic link ./System/Library/Frameworks/DiscRecording.framework/Resources->Versions/Current/Resources repaired Symbolic link ./System/Library/Frameworks/DiscRecording.framework/Versions/A/Frameworks/DiscRecordingContent.framework/Versions/Current->A repaired Symbolic link .
Posts
Getting Stuff Into MySQL
Forget clumsy scripts to load SQL files into MySQL. Here’s how it worked for me:
check your php.ini “upload_max_filesize”
$newFile = move_uploaded file ($FILES['yourfile']['tmp_name'], '/var/tmp/yourfile'); $sql = "LOAD DATA INFILE '$newFile' INTO TABLE db.table FIELDS TERMINATED BY ',' ENCLOSED BY '\"' ESCAPED BY '\"' LINES TERMINATED BY '\r'"; Strangely, MySQL 4.x doesn’t like the “ENCLOSED BY” statement (it works, but will only import the first row)
Posts
Auto Junkmail Deletion
If You’re using the “junkmail@yourdomain” technique to teach your server junk, You can make the server auto-delete learned stuff like this:
$ sudo bash $ export EDITOR=nano; crontab -e -u cyrusimap 30 13 * * * /usr/bin/cyrus/bin/ipurge -d 1 -f user/junkmail and if “crontab -e” gives you grief (like hanging and not writing the file), then just edit /etc/crontab
Posts
Back To Basics vol 2
Just so’s I don’t ever forget this again. To set up SSH without passwords: mkdir ~/.ssh ssh-keygen -t rsa scp ~/.ssh/id_rsa.pub me@server:~/me/.ssh/authorized_keys2 man ssh
Posts
WebDAV chroot
Well, there’s really no such thing. But you can make it work. In SA, create a realm where you want your WebDAV home folders to be. Give Auth/Browse access only to an admin. Then just create something like /etc/httpd/sites/WebDavUsers.conf and add the following:
<Directory "/WebDAV/folder/username"> <LimitExcept GET HEAD OPTIONS> require user username </LimitExcept> </Directory> It seems that Digest authentication under OS X comes automagically from NetInfo which means we don’t have to edit any passwordfiles.
Posts
FTP Without Shell
10.4 server won’t allow a user to log in without a “valid” shell. So here’s a workaround (many thanks to unixgeek!!):
> /etc/shells Set ‘/usr/bin/false’ as the user’s shell According to some sources, this works also for SFTP, but I haven’t been able to confirm this.
Posts
Back To the Basics
1) echo “sudo servaradmin stop $1; sudo serveradin start $1” > /usr/bin/local/restart
2) http://www.ibiblio.org/pub/Linux/docs/howto/DNS-HOWTO 3) http://www.macdevcenter.com/pub/a/mac/2003/04/15/bind.html?page=1
Posts
The Intel Pro-1000 GT NIC won't work with OS X
with neither .4.6 or 7. The older model did. The SmallTree drivers won’t help.
Posts
Troube With Quotas
If Server Admin doesn’t want to enable quotas, try this:
sudo rm /.quota.* > quotaon filesys > reboot
Posts
Attack of DNS vol 2
Since 10.4.6 all services (it seems) require a FQDN to function. With a NAT-d IP this is ofcourse impossible. So to get servermgrd to cool down behind a NAT: * Configure DNS service (just add your local IP, no MX etc) * Enable DNS server * Add server IP to DNS servers * Add NAT router’s IP to DNS servers
Then check
host localip host name.of.server sudo changeip -checkhostname http://docs.
Posts
ApacheBench
Interesting differences running ab -n 1000 -c 10 http://localhost/
1.5Ghz PowerBook G4 running Apache 1.3.3 OS X 10.4.6 Server Software: Apache/1.3.33 Server Hostname: localhost Server Port: 80 Document Path: / Document Length: 1456 bytes Concurrency Level: 10 Time taken for tests: 2.432 seconds Complete requests: 1000 Failed requests: 0 Broken pipe errors: 0 Total transferred: 1867000 bytes HTML transferred: 1456000 bytes Requests per second: 411.18 [#/sec] (mean) Time per request: 24.
Posts
Now where did I put that server?
>/System/Library/ServerSetup/sa_srchr 224.0.0.1 Sadly it only works with machines booted off the install disc. :(
Posts
When (mail) disaster strikes!
Backup everything (/var/imap, /var/spool/imap) , then run: sudo /usr/bin/cyrus/bin/reconstruct The “Repair” and “Reconstruct” buttons don’t seem to do much in SA. :-/
Posts
PHP weirdness
This doesn’t work as expected:
echo "foo:bar" | php -r "print str_replace(':','-','php://stdin');" Must investigate. Maybe try with another machine…
UPDATE:
echo "foo:bar" | php -r "print str_replace(':','-',trim(fgets(STDIN)));"
Posts
Is it just me or is it really WebDAV?
When moving something to/from a WebDAV volume (such as an iDisk), try saving something to the desktop. Here, the file is saved but doesnt show up, neither on the desktop, nor by browsing the Desktop folder (in any view). Things get really weird when you “open file” from the Terminal, then Command-click on the title bar - suddenly the file just appears.
This actually happens in any folder.
Posts
Review - Elephants Dream
After receving my copy yesterday and watching the movie and commentaries several times and without yet looking at what others have said, here’s my completely subjective, non-technical review:
The movie First, the bad. Not all movies need a script to work but most do and that includes this one. At times it felt like the only thing keeping the story together was the fact that the characters were heading somewhere.
Posts
Schools should encourage work publication
Teachers rarely have time to give feedback, peers often just don’t know what to say. So why not help students get feedback from somewhere else?
Posts
Symbian madness
http://discussion.forum.nokia.com/forum/archive/index.php/t-66906.html http://www.symbian-toys.com/ http://cms.planeetta.fi/symbian/labs
Posts
From OSX-vnc to ARD
$ SystemStarter -v stop VNC $ cd /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources $ ./kickstart -configure -access -privs -all -users admin $ ./kickstart -restart -agent -console $ ./kickstart -activate
Posts
Hush!
To mute the mini during bedtime, add this to root’s crontab (crontab -e or using the wonderful CronniX) serveradmin stop XGrid and then the reverse in the morning
Posts
It's DNS again!
Server Admin took really long to start up. Noticed that reverse DNS wasn’t working: [filipp@Scruffy filipp]$ host 192.168.1.10 ;; connection timed out; no servers could be reached
Added server to my name servers list, all scrolls like butter again. :)
Posts
Basic AuthConfig
To enable per-user homedirectory authentication:
$ nano /Users/user/Sites.htaccess AuthUserFile /Users/user/.htpasswd AuthName "Palun anna parool" AuthType Basic require user username $ htpasswd -c .htpasswd username $ sudo nano /etc/httpd/httpd.conf AllowOverride AuthConfig $ sudo serveradmin stop web; sudo serveradmin start web
Posts
Changing IPs
Had to rearrange my IP setup due to a new router:
changeip /LDAPv3/127.0.0.1 192.168.0.111 192.168.1.10 oldhost newhost /usr/sbin/networksetup -setmanual "Built-in Ethernet" 192.168.1.10 255.255.255.0 192.168.1.1
Posts
Localtime
For some weird reason this gets set incorrectly sometimes, so this helps: sudo ln -s /usr/share/zoneinfo/EET /etc/localtime
Posts
Resizing FileVault Disk Images
After installing a bigger drive:
Log in as another admin user cd /Users/filevaultuser hdiutil resize -size 1t filevaultuser.sparseimage Give filevaultusers password
Posts
Apache 2.2
There seems to be some problems with certain Apache 2.x configs under OS X (10.4 only?) where the connection would just randomly quit. One fix is to install 2.2
./configure --prefix=/usr/local/apache2 --enable-so --enable-mods-shared=most --enable-ssl --with-ssl=/usr --enable-cgi --enable-mime-magic --enable-dav
Posts
Firebird RDBMS weirdness
Installed the official binary http://prdownloads.sourceforge.net/firebird/Firebird-CS-1.5.1-MacOS.zip libgds.so is actually /Library/Frameworks/Firebird.framework/Versions/A/Firebird
A script (http://www.b-shock.org/macosx/firebird/) that gives a standard Firebird install:
#!/bin/bash mkdir /usr/local/firebird cd /usr/local/firebird ln -s /Library/Frameworks/Firebird.framework/Versions/A/Headers ./include ln -s /Library/Frameworks/Firebird.framework/Versions/A/Resources/bin ./bin ln -s /Library/Frameworks/Firebird.framework/Versions/A/Resources/examples ./examples mkdir lib cd lib ln -s /Library/Frameworks/Firebird.framework/Versions/A/Firebird ./libgds.a ln -s /Library/Frameworks/Firebird.framework/Versions/A/Firebird ./libgds.so ln -s /Library/Frameworks/Firebird.framework/Versions/A/Firebird ./libgds.so.0 ln -s /Library/Frameworks/Firebird.framework/Versions/A/Firebird ./libib_util.so cd /usr/local/include ln -s /usr/local/firebird/include/* . cd /usr/local/lib ln -s /usr/local/firebird/lib/* . exit
Posts
Installing PHP 5.1.2
These settings worked well for me:
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/lib --with-apxs2=/usr/local/apache2/bin/apxs --with-iconv --with-openssl=/usr --with-zlib=/usr --with-mysql --with-libxml-dir=/usr/local/php --with-xsl=/usr/local/php --with-pdflib=/usr/local/php --with-png-dir=/usr/local/php --with-zlib-dir=/usr --with-ldap--with-iodbc=/usr --with-xmlrpc --with-expat-dir=/usr/local/php --with-iconv-dir=/usr --with-curl=/usr/local/php --enable-exif --enable-soap --enable-sockets --enable-calendar --with-bz2=/usr --enable-calendar --enable-memory-limit nano -w /usr/local/php/lib/php.ini include_path .:
Posts
Restoring WebLogs with Apache 2.2
http://www.wmwweb.com/apache/tomcat/tomcat-connectors/jk/source/jk-1.2.15/jakarta-tomcat-connectors-1.2.15-src.tar.gz
./configure --with-apxs=/usr/local/apache2/bin/apxs > nano /usr/local/apache2/conf/httpd.conf ## WebLog JKWorkersFile /etc/httpd/workers.properties JKLogFile /var/log/httpd/mod_jk.log JKLogLevel error JKMount /*.jsp JBoss1 JKMount /servlet/* JBoss1 JKMount /examples/* JBoss1 JKMount /weblog/* blojsomworker JKMount /blojsom_resources/* blojsomworker
Posts
Upgrading to MySQL 5
http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-standard-5.0.18-osx10.4-powerpc.dmg/from/pick#mirrors
G5 version (& RAM > 4GB) http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-standard-5.0.18-osx10.4-powerpc-64bit.dmg/from/pick#mirrors
> mkdir /Library/StartupItems/MySQLCOM > nano /Library/StartupItems/MySQLCOM/MySQLCOM #!/bin/sh ## # MySQL 5 Server ## . /etc/rc.common StartService () { if [ "${MYSQL:=-NO-}" = "-YES-" ]; then ConsoleMessage "Starting MySQL 5 Server" cd /usr/local/mysql ./bin/mysqld_safe & fi } StopService () { ConsoleMessage "Stopping MySQL 5 Server" PIDS=`ps ax | grep mysql | grep -v grep | awk '{print $1}'` for pid in $PIDS; do kill -KILL $pid done } RestartService () { StopService sleep 3 StartService } RunService "$1" > nano /Library/StartupItems/MySQLCOM/StartupParameters.
Posts
Madeira
… kohta on ilmselt piisavalt inglise keeles kirjutatud seettõttu järgnev siis emakeeles. Mis seal ikka öelda - hämmastav. Hea, et kaamera kaasas oli, muidu oleks kogu reis tundunud nagu mingi nädala pikkuse unenäona.
Esimene laks on muidugi loodus - see lööb pahviks ja siis piilud iga hommik hotelli aknast välja, et kontrollida, et vaade ikka alles on.
Ööbisime Casino Park - nimelises hotellis mis näeb nii seest kui väljast välja nagu mingi vanakooli NSVL-i aegne jurakas (ja ilmselt seda ta ka on) - teenindus oli laitmatu ja paremat asukohta oleks raske olnud ette kujutada.
Posts
body { max-width: 980px; border: 1px solid #ddd; outline: 1300px solid #fff; margin: 16px auto; } body .markdown-body { padding: 45px; } @font-face { font-family: fontawesome-mini; src: url(data:font/woff;charset=utf-8;base64,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) format('woff'); } @font-face { font-family: octicons-anchor; src: url(data:font/woff;charset=utf-8;base64,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) format('woff'); } .markdown-body { font-family: sans-serif; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; color: #333333; overflow: hidden; font-family: "Helvetica Neue", Helvetica, "Segoe UI", Arial, freesans, sans-serif; font-size: 16px; line-height: 1.6; word-wrap: break-word; } .markdown-body a { background: transparent; } .