![]() | You are viewing Log in Create a LiveJournal Account Learn more | Explore LJ: Life Entertainment Music Culture News & Politics Technology |
I’m going to have to remember that one for future use.(“>” is me; the rest is the other party’s response.)
> If I had my say, nobody would use C++ or Java, the x86 architecture would be
> ancient history, and relational databases would actually be relational.
>
> Just saying.
Regretably, these things are decided by the paymasters, who are
usually so obsessed by next week's progress report that they can't
see beyond the end of their noses. I speak as one who has seen it
many times. Then the idiots end up pay ME to sort the mess out.
The problem with Java is that it is three things:
1. A language with a crappy rehack of C++, allegedly making it more OO.
2. A run time model that supposedly allows write once, run anywhere.
3. A huge defined standard library of reusable components.
The problem is that when people say that they hate Java, they mean
(1). When they say they love it, they mean (3). As for (2) ...
well, to drop the tone of the discussion a little, I once saw the
remark that saying that Java is good because it will run anywhere is
like saying anal sex is good because it works with all genders.
All people have a "tact filter", which applies tact in one direction to everything that passes through it. Most "normal people" have the tact filter positioned to apply tact in the outgoing direction. Thus whatever normal people say gets the appropriate amount of tact applied to it before they say it. This is because when they were growing up, their parents continually drilled into their heads statements like, "If you can't say something nice, don't say anything at all!"I like this argument in oh-so-many ways. Simple: check. Invokes nostalgia-tinted rememberances of childhood: check. Has apparent application to reality: check.
"Nerds," on the other hand, have their tact filter positioned to apply tact in the incoming direction. Thus, whatever anyone says to them gets the appropriate amount of tact added when they hear it. This is because when nerds were growing up, they continually got picked on, and their parents continually drilled into their heads statements like, "They're just saying those mean things because they're jealous. They don't really mean it."
When normal people talk to each other, both people usually apply the appropriate amount of tact to everything they say, and no one's feelings get hurt. When nerds talk to each other, both people usually apply the appropriate amount of tact to everything they hear, and no one's feelings get hurt. However, when normal people talk to nerds, the nerds often get frustrated because the normal people seem to be dodging the real issues and not saying what they really mean. Worse yet, when nerds talk to normal people, the normal people's feelings often get hurt because the nerds don't apply tact, assuming the normal person will take their blunt statements and apply whatever tact is necessary.
So, nerds need to understand that normal people have to apply tact to everything they say; they become really uncomfortable if they can't do this. Normal people need to understand that despite the fact that nerds are usually tactless, things they say are almost never meant personally and shouldn't be taken that way. Both types of people need to be extra patient when dealing with someone whose tact filter is backwards relative to their own.
Copyright © 1996, 2006 by Jeff Bigler. Permission is granted to redistribute this text in its entirety, provided that this copyright notice and either the URL for the page (http://www.mit.edu/~jcb/tact.html)or a link to it is included. All other rights reserved.
.ps].ps.gz].ps.gz].ps.gz] KEY | PLAIN | SHIFT | CTRL | META
space| page down | | |
| (pager) | | |
a |insert after character| append to line | beginning of line |
| (vi) | (vi) | (Emacs) |
b | previous word | | |
| (vi) | | |
| page up | | previous character | previous word
| (pager) | | (Emacs) | (Emacs)
c | replace range | replace to EOL | SIGINT |
| (vi) | (vi) | (term) |
d | delete line | delete to EOL | delete character | delete word
| (vi) | (vi) | (Emacs) | (Emacs)
| half-page down | | |
| (pager) | | |
e | skip word | | end of line |
| (vi) | | (Emacs) |
f | find character |reverse find character| next character | next word
| (vi) | (vi) | (Emacs) | (Emacs)
g | | goto line/EOF | |
| | (vi) | |
h | previous character | beginning of screen | backspace character | backspace word
| (vi) | (vi) | (Emacs) | (Emacs)
i | insert | | tab |
| (vi) | | (term) |
j | down one line | | new line |
| (vi) | | (term) |
k | up one line | | |
| (vi) | | |
l | next character | end of screen | form feed |
| (vi) | (vi) | (term) |
m | | | line feed |
| | | (term) |
n | next search result |previous search result| next line |
| (vi) | (vi) | (Emacs) |
o | new line after | new line before | |
| (vi) | (vi) | |
p | put after | put before | previous line |
| (vi) | (vi) | (Emacs) |
q | record macro | | XOFF |
| (vi) | | (term) |
r | | overwrite | |
| | (vi) | |
s | replace character | replace line | XON |
| (vi) | (vi) | (term) |
t | | | transpose |
| | | (Emacs) |
u | half-page up | | |
| (pager) | | |
v | edit | | |
| (pager) | | |
w | next word | | |
| (vi) | | |
x | delete character | | completion |
| (vi) | | (vi) |
z | | | SIGSTOP |
| | | (term) |
0 | beginning of line | next paragraph | |
| (vi) | (vi) | |
4 | | end of line | |
| | (vi) | |
5 | | balancing structure | |
| | (vi) | |
6 | | start of line | |
| | (vi) | |
9 | | previous paragraph | |
| | (vi) | |
0-9 | count | | | count
| (vi) | | | (Emacs)
- | option | | |
| (pager) | | |
= | reformat | | |
| (vi) | | |
[ | previous block | | |
| (vi) | | |
] | next block | | |
| (vi) | | |
\ | | | SIGQUIT |
| | | (term) |
; | | ex mode | |
| | (vi) | |
, | | indent | |
| | (vi) | |
. | repeat insert | outdent | |
| (vi) | (vi) | |
/ | search | reverse search | |
| (vi) | (vi) | |
vi entries probably only exist in Vim. As you can tell, I use Vim far more than Emacs; I only know a few Emacs keybindings because libreadline/Bash uses a lot of them. Most of the pager entries probably only exist in less, which also copies quite a few of the vi keybindings.dtlin@burnup:~$ wc dwm-3.8/*.[ch](I failed at counting the first time I tried to compare them. Computers are really much better at this than I am.)
402 1274 9459 dwm-3.8/client.c
99 593 3859 dwm-3.8/config.arg.h
97 588 3862 dwm-3.8/config.default.h
136 448 2911 dwm-3.8/draw.c
147 1003 6186 dwm-3.8/dwm.h
365 1025 8124 dwm-3.8/event.c
255 779 4816 dwm-3.8/layout.c
325 1066 9123 dwm-3.8/main.c
154 425 2836 dwm-3.8/tag.c
54 142 1053 dwm-3.8/util.c
2034 7343 52229 total
dtlin@burnup:~$ cat dwm-3.8/*.[ch] | gzip -9 | wc -c
13749
dtlin@burnup:~$ wc xmonad/*.hs
97 584 3787 xmonad/Config.hs
184 848 5877 xmonad/Main.hs
223 1242 7822 xmonad/Operations.hs
179 1334 7148 xmonad/StackSet.hs
114 567 3708 xmonad/XMonad.hs
797 4575 28342 total
dtlin@burnup:~$ cat xmonad/*.hs | gzip -9 | wc -c
9073
++counter has an obvious flaw: it’s compiled to “load; increment; store”, and if this thread is pre-empted, wrong things could happen. Rare and unexpected, but possible.load with reservation, increment, store with reservation, retry if somebody else interrupted”. (There’s “I’m about to do something that shouldn’t be reordered”, “it’s unlikely that you’ll branch here”, and “tell everybody else that they should probably sync up memory” hints in there, but those aren’t truly necessary.)lock xadd” means to first signal “LOCK#” to all other processors, which is an announcement of “nobody else do anything for a while!”, then exchanging, adding, and storing.gcc (--host=powerpc-linux-gnu --target=i486-linux-gnu), even with the help of the Debian Wiki, because I’m doing this on a 1.25GHz G4. Even longer if debian/rules.defs insists on trying (and failing) to build a x86_64 cross-compiler too, but I eventually got it working.x86 binary archives without source. Which is really annoying, because it means I can’t build, run, or test it on my laptop.~/.bashrc. I think it’s pretty clever, if I do say so myself._PS1() {
local PRE= NAME="$1" LENGTH="$2"
[[ "$NAME" != "${NAME#$HOME/}" || -z "${NAME#$HOME}" ]] &&
PRE+='~' NAME="${NAME#$HOME}" LENGTH=$[LENGTH-1]
((${#NAME}>$LENGTH)) && NAME="/...${NAME:$[${#NAME}-LENGTH+4]}"
echo "$PRE$NAME"
}
PS1='${debian_chroot:+($debian_chroot)}\[\033[0 1;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\] $(_PS1 "$PWD" 20)\[\033[00m\]\$ '/dev/hda <[/boot:40M] [SWAP:1.5G] [/:10G] [/home:68G]> /dev/sda <[/home/Shared:150G]>/dev/sda <[/boot:60M] [SWAP:2G] [/:147G]> /dev/sdb <[/home:373GB]>


Alias /darcs/repos /var/darcs
<Directory /var/www/localhost/htdocs/darcs>
AllowOverride None
RewriteEngine on
RewriteBase /darcs
RewriteCond %{REMOTE_HOST} !^(192\.168\.\d+\.\d+|127\.\d+\.\d+\.\d+)$
RewriteCond %{QUERY_STRING} r=([^&;]*)
RewriteCond /var/darcs/%1/.private -f
RewriteRule (.*) $1 [F]
RewriteCond %{REQUEST_URI} ^/darcs/(.*)
RewriteCond /var/www/localhost/htdocs/darcs/%1 !-f
RewriteCond %{REQUEST_URI} ^/darcs/(.*)
RewriteCond /var/darcs/%1 -f
RewriteRule ^([^?]+) repos/$1
DirectoryIndex darcsweb.cgi
<Files darcsweb.cgi>
Options ExecCGI
SetHandler cgi-script
</Files>
<Files ~ "^config\.py">
Order allow,deny
Deny from all
</Files>
</Directory>
<Directory /var/darcs>
AllowOverride None
RewriteEngine on
RewriteBase /darcs/repos
RewriteCond %{REMOTE_HOST} !^(192\.168\.\d+\.\d+|127\.\d+\.\d+\.\d+)$
RewriteCond %{REQUEST_URI} ^/darcs/repos/([^/]*)/
RewriteCond /var/darcs/%1/.private -f
RewriteRule (.*) $1 [F]
SetHandler default-handler
DAV On
</Directory>
/home/dtlin/darcs, not /var/darcs, but that’s because my current /var partition is a bit small. I just bought a new 7200RPM 400GB SATA HDD, so everything should be organized a bit saner soon.-e to exit on error, -x to print out every commandlsdvd manually to determine which titles to rip頭悪い. (Sounded like 佐祐理わ頭悪い子です, though I’m not completely sure. At least it’s consistent with the fansub.)| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 |