I have a Word doc. I use Quicklook on it. It generates a visual but you can’t do anything with it. I wanted to print without opening MS Word. Most tips talk about using the File menu in Finder to Print… the selected file, which of course opens the doc. That’s not desirable. I couldn’t find a solution until I searched qlmanage instead of “quick look”. Well low and behold…
Create PDFs with QuickLook – Stian’s PhD wiki
Word documents are good for editing, and better for converting to Kindle .mobi files, etc. But my academic workflow is built around PDFs, and I like using Skim for marking them up etc. I also hate having to fire up Word every time I just want a quick look at some document. Turns out you can use QuickLook to generate PDFs from any format it knows how to preview (and you can add support for lot’s of extra formats through plugins).
For the latest code:
I’ll have to see if I can get this working with Alfredapp. 🙂
edit: a few different takes on it are here:
I’ve been investigating some possible development opportunities dealing with OpenXML. Obviously for what it has to do there is quite a lot baked in and finding out what a particular node or attribute does though can be a bit time consuming. Schema Central offers a search though. Fast and concise. Not noticing the context I was in I saw <w:b />. A quick search yielded the text below prompting me to look at surrounding nodes. Yep, makes sense. Nice.
OOXML w:b — Complete documentation and samples
I use Skim for reading PDFs whenever I don’t need to do major collaboration with others with Acrobat. I really like it and recommend it whenever someone even remotely mentions issues with reading PDFs on OS X. One neat thing Skim has is a reading bar. It helps to focus when going through code related books, etc. I never knew how to make the most of it until today. I was thinking “it sure would be nice if you could move that reading bar with the keyboard.” I’ve thought that many times. Today I checked the suggested features and sure enough, it’s been requested and fulfilled. But it’s hidden!
SourceForge.net: Tips and Tricks – skim-app
Skim also has a few unlisted shortcuts to make life easier. Some only work in specific tool modes or when a note is selected. These shortcuts only work when the main PDF view has the focus.
|space, ⇧space, page down, page up
||scroll page down/up
|→, ←, ↓, ↑
|⌥⌘→, ⌥⌘←, ⌥⌘↓, ⌥⌘↑
||change tool mode
|→, ←, ↓, ↑, ⇧→, ⇧←, ⇧↓, ⇧↑
||move selected note
||edit selected note
|⌥⌃→, ⌥⌃←, ⌥⌃↓, ⌥⌃↑, ⇧⌃→, ⇧⌃←, ⇧⌃↓, ⇧⌃↑
||resize selected note
|⌥→, ⌥←, ⌥↓, ⌥↑
||move reading bar
||resize reading bar
||rotate through notes and links
||deselect active note
|t, n, c, b, h, u, s, l, f
||change note tool mode (only in note tool mode)
I may finally get my hand to try Appcelerator studio with a desktop app. It looks quite interesting. I like the idea of being able to use HTML5/CSS3/JS for the front end and use other scripting languages on the backend. PHP, Python and Ruby are all options but OS X Snow Leopard has trouble with PHP and Python’s setup isn’t as intuitive as Ruby’s setup. It’s a bit odd given Python’s influence in the Appcelerator environment. But Ruby looks fun. Looking forward to trying it out. Including Ruby gems seems straightforward too:
And then there is this nice little demo app to show off a bit of Ruby and Titanium:
Nice. Props to the folks who make this possible!
I was working on a Flash Pro project, coding in FlashBuilder. The way to go. The nearest I can tell is when running a debug build for some reason the project lost something. The legendary yellow squiggles with the ? marks appeared all over the place. I couldn’t get it to go away. It’s in git so I just checked it out in a new folder without the project files and could keep moving. After another debug build, it happened again. Not sure on that bit. But I found that doing ANY change in the file and saving the imported file would suddenly make the file usable again.
Open up MyClass and do anything that allows FlashBuilder to save it. The quickest was space/delete/save. If you have FlexFormatter on make sure auto format isn’t on if you don’t want to reformat 3rd party libraries when doing this. So it seemed that anything you change, so that it saves, brings the file back into FlashBuilder’s list of valid imports. But when you close the project and reopen it, the invalid imports are back.
That got me to thinking… if I just touch the file would that do it? It did. Now we’re in business.
find . -type f -print0 | xargs -0 touch
That did the trick. All the files are back in business. It’ll happen again but at least I have a quick way to get it working so refactoring, finding usages, hiearchy and all that goodness works again.
This is FlashBuilder 4.5.1.
Just a note, when installing Firequery and Firelogger in Firefox 3.6 (portable version) I ran into the “requires additional items” error. It turns out that my Firebug was 1.7bx which is beyond the 1.7 requirement for these plugins which causes them to fail. To get them working (though I haven’t completed tested them yet of course) you just have to go to the install.rdf files for both and make a couple of tweaks. In Firefox 3 you can right click on the extension in the add-on window and go to the extension’s install directory. Open up the install.rdf in a text editor and change
and restart. Now to test…
Backbone.js is catching on and for good reason. It’s not heavy weight like SproutCore or Cappucino, gets you going quickly, and gets out of your way. Some folks complain that is’t not full-featured enough. But that’s because it’s designed to be light weight and über extensible. It doesn’t do what you want? Extend it! Using it’s own built in .extend or with the now 100% completely indispensible underscore.js, it’s only required dependecy.
Laptop logic board died.
Hard drive is fine.
Got a new laptop (not the way to upgrade!)
Client WordPress site runs fine from external hard drive and new install of MAMP. Databases copied over and such (after minor heart attack when not copying over the required INNODB files)
rsync over to local drive and it doesn’t work. “Pages” aren’t working. URLs like /?p=5 work fine. Rewriting is an issue.
Make a new host at old.clientsite.dev (with the very helpful and neat virtualhostx) and point it at the external drive. Still fine. but clientsite.dev still no go.
Tried to set up RewriteLogging but it doesn’t work. Thrash around for hours.
httpd.conf has the goods
but no go. Not sure why. Notice in /private/etc/apache2/extra/httpd-vhosts.conf that there is one difference. The old vhost has AllowOverride All whereas the new one does not. Added that, and all is good.
Back to work again.
Just wanted to help get the word out about this ORM for PHP. It’s one of the smoothest I have used so far. Very straightforward.
Very brief Slideshare:
Just want to keep this for reference.
In the Woods – Vertical Centering With CSS
There are a few different ways to vertically centre objects with CSS, but it can be difficult to choose the right one. I’ll show you all the best ways I’ve seen and also how to create a nice little centered website.
Briefly, the content was in the div that had the overflow: auto and the content was just going E-VE-RY-WHERE. Solution? See below. Yep it worked. Doing some work for a client that needs the legendary IE7- (IE6) support. Doing CSS fixes without hacks until HTML structure has to change. Hopefully not! But this little bit helped.
Overflow Auto and Position Relative
The simplest fix is to apply
position: relative to the containing block; the one with
I dig Django. I’ve even been using Hyde to develop static sites especially when working on PSD > XHTML conversions. It lets me keep things DRY. You want that same block on 20 pages? Cool, no prob. Oh now you want to change it on those 20 pages with a little tweak to each? OK still cool, no prob. Anyway, I’ve seen some nice bits of code to get a dev environment up and running quickly and this post on minimal Django is cool. But I also really like what I see in Flask which inspired the search.
Minimal Django – Olifante’s Lair
Flask is a new microframework for web development. Created by Armin Ronacher, it grew from an April Fools’ prank into an elegant, usable tool in a very short time, mostly thanks to its clever leveraging of Armin’s two other babies, the Werkzeug webserver and the Jinja2 templating language.
I work daily with Django and love it, but after reading about Flask I got a small case of microframework envy. Why can’t Django development scale down as well as it scales up, and let a beginner have fun with single-file web development without becoming swamped in the full complexity of modern web development? It turns out Django can easily scale down.
Will have to elaborate in a bit… 🙂
15 Awesome and Useful Safari Extensions
As die-hard extension addicts since the first Safari 5 release, we’ve scoured the web to find 15 of our favorites. Click through the gallery for our picks.
I have been doing some recent work for a client with a large amount of JSON and webservices. Of course CharlesProxy is always helpful for this. I use it to be able analyze data flows, etc. In this case I wanted to be able to filter through the JSON to get at specific elements. Doing this for a while I thought it’d be neat to filter it the way we use XPath with XML. JSON Editor is a cool AIR app which allows you to view JSON and XML but also translate from one to the other. So I thought I’d just use that to convert the JSON to XML and then use XPath on it. Then I thought… “has anyone done anything like xpath for json?” Turns out they have.
jsonpath – Project Hosting on Google Code
JSONPath is a lightweight component that allows to find and extract relevant portions out of JSON structures on the client as well as on the server.
You can read more about it.
Extensive test examples are available for JSONPath.
A PHP helper class JsonStore allows read, write and delete operations on JSON structures.
This isn’t the only json-xpath implementation of course. This also looks promising.
JPath – bluelinecity.com
I was wondering if it is possible to jump directly to the ASDoc of a Flash/Flex component. Seems it is possible.
Oh my. Very nice. Place your cursor in the code of interest and press Shift + F2. And there you go. Previously I used FluidApp to wrap the AS3 reference documentation locally as noted below. But now this is not needed. On my box FluidApp’s search is faster sometimes than the Adobe Help depending on what’s running, but jumping right to the docs in question is very helpful.
Big Spaceship | Labs Blog – AIR App: AS3 Language Reference
I found the scrollbars in the air app to be shoddy, so I downloaded the offline version of the AS3 docs:
and then created a fluid app from my local version.
now runs perfect offline and even has a search.
This is the simplest and cleanest singleton patter I have seen to date for AS3. Let’s you set it up and get right to coding. The author does make a request for a singleton metadata tag to automatically make classes into singletons. Well we sort of have that with RobotLegs. With the injection rules you can just tell RobotLegs that any time you inject an instance of a particular class just to make it a singleton and it’ll do that in the background for you. Sweet and simple. But this code linked below is the closest non-framework solution I have seen that gets close to that in its simplicity.
ActionScript 3 Singleton Redux – darron schall
It was actually a combination of other factors (and personal preference) that made me revisit the singleton pattern. The singleton technique that I prefer was developed to address the other issues I was running into and to reflect my personal coding style. While I was at it, I figured I might as well address the private constructor issue too. After all, we all love being smacked around by the compiler sometimes.
The technique I prefer has the following highlights:
- Usage of static instance read-only property instead of a static getInstance() function. This is somewhat a matter of style and personal preference, but I prefer the succinctness of the read-only property. This is especially obvious when the singleton is used in binding expressions. Plus, getInstance() is so 1990s Java which ActionScript is most definitely not. I kid, I kid. But seriously, “.instance” is cooler.
- Usage of a private lock class to prevent outside construction. While this is a common theme in the above links, my approach is slightly different. Instead of passing an instance of the private locking class to the constructor, I just pass the Class reference itself. This does two things. First, it clarifies the conditional check in the constructor. The test for the proper locking Class reference communicates the code’s intent better than the traditional check for not null. Second, it encapsulates the private locking class itself. The constructor’s argument is simply lock:Class which doesn’t expose the name of the private locking class to the outside world, but still communicates that the constructor is locked.
- Removal of ‘Unable to bind’ warnings in Flex 2. When you use a singleton in a binding expression, it’s typical to have the Console log flooded with warning messages indicating that binding to the instance property will not be able to detect updates. My singleton version fixes these warnings.
- Use of const instead of var for the instance storage. This one is pretty obvious, but using const here communicates intent better. The variable storing the singleton instance is not allowed to change so const is the better choice.
Documentation is great. Writing it is not. Writing notes in code then pulling that into some sort of printed reference is even worse. But there are solutions. For Flash/Flex devs there are ASDoc comments. Now if you want to add your own little tweaks to it, it seems, at least in the past, this was possible.
ASDoc Enhancements | www.boristhebrave.com
I’ve put in a few customizations to the standard ASDoc template, that I’m going to share here, as they are generally useful. You will need to customize the files a bit for your own project, though.
This is a note for reference in case I run into some funkiness that looks like this might address. Very nice and concise.
Breaking Floats Without Hacks
When you want to clear all floats across the entire width of the page or a div, this single line of CSS code just won’t cut it when using: <div class=”clear”></div>.
- clear: both;
Instead, we’re going to use four lines.
- width: 100%;
- height: 1px;
- margin: 0 0 -1px;
- clear: both;
Alright, let’s break this down. First of all, the major problem with clearing correctly in all browsers lies mainly in a few of Internet Explorer’s quirks. Both width: 100%; and height: 1px; force the browser into accepting that there is a div there. The margin: 0 0 -1px; negates the 1 pixel space that height introduced; this is the only property that is not required. Natually, clear: both; is the special ingredient to make all of this work.
When you need it you need it. I just wanted to keep a link to this.
Fixed Positioning in Internet Explorer 6
Fixed positioning has always been a nuisance for web designers because of the lack of support for it in Internet Explorer 6, but I’ve come up with a solution that allows for cross-browser fixed positioning that doesn’t come at the large costs that other techniques result in. If you’ve been on the hunt for a way to get elements with
position: fixed; to work properly in Internet Explorer 6, undoubtedly you’ve noticed that most methods come at the expense of absolute positioning or resorting to scripting. Mine does not.
I’ve been working with Captivate 5 and it’s pretty nice. Coming from a Flash/Flex background I am used to the edit, build, and review workflow. Make changes, compile it (oh so much nicer in FB4+Flash CS5), and then view the changes. So I do that in Captivate, too. But I don’t have too…
Adobe in Technical Communication and eLearning » Using a Solo Review to Edit Adobe Captivate Projects Faster [VIDEO]
In this video I go over a process that works for me, namely conducting a local, solo Review, where I can insert comments on-the-fly as I’m previewing my project. These notes are then imported back into my project exactly where I inserted them.
I had seen the author’s original writeup on Camouflage and that was already very cool. This goes beyond that and again just beyond CSS properties. The idea that any public property can be set via an external file and it’s not XML, that’s much cleaner. But even the idea of just changing positions, sizes, etc., in such a clean and fast way and with inheritance as well? Merging?! Very nice.
F*CSS | About
F*CSS is a custom CSS parser for Flash based on the PropteryManagement System in Flash Camouflage. The main class called StyleSheet (found inside of the com.flashartofwar.fcss.stylesheets package), goes well beyond the native StyleSheet class by supporting style inheritance, pseudo selectors, and merging styles on the fly. The goal of the StyleSheet is to make styles something you can apply to any of your classes instead of just TextFields. CSS is a great way to define your class’s properties in an external file and F*CSS helps convert these css styles into property/value pairs you can apply to any Object.
It has autocomplete for tags so I’ll be switching over to tags. I know there is a way to convert categories to tags but I’ll have to save that for another day.
Scribefire on Safari « Ramblings
Might have to switch to using tags…
And apparently all the code is semantic as well. It’s clean and light on hacks which is always good.
New CSS Sticky Footer – 2010 – HTML for Bottom of Page Footer
This sticky footer solution is working in all major browsers, including Google Chrome and IE 8! It works with
floated 2-column layouts and we don’t get overlap in resized browser windows unlike older solutions
you find when you Google sticky footer. You don’t need an empty push div or cleafix hack. Here is how to use this sticky footer code.
Just installed Safari 5.0.1 with the new Extension feature. Scribefire is now available on Safari which is cool. But you can’t add categories the way you do in the Firefox version. Might have to switch to using tags… either that or use Safari’s Open Page With Firefox for blogging…
For my overly customized MAMP install, it wasn’t pretty. I forget why it’s actually set up this way now but the different parts didn’t like each other and it took quite a while to get it working. Not fun. But fortunately there were those who had gone before me and it wasn’t hard in the end. It just took a long time.
Correction. It just took a really REALLY long time. The reason? You need to have libs and headers and such in places that all make sense for everything to compile. (This is the SHORT version.) So MacPorts to the rescue. Install py25-mysql, copy some files around, use a slightly different “HOST” setting for the database connection and you’re good to go. But installing py25-mysql installs ALL the dependencies needed in order to get that running. Which is good when that’s what you need. Which is what took a long time. But at least it was a one command thing and not hopping all over the ‘net to find and install things as I was very close to doing.
And that bit about the unique “HOST” setting for mine turns out to be
DATABASE_HOST = ‘/Applications/MAMP_1.7.2/tmp/mysql/mysql.sock’