Ramin Hossaini (blog)

5Jun/102

Ridding Twitter of Annoyances

Fact: Life is tough when you're easily irritated online.

Twitter is an amazing service (if used properly). It's a great way of getting news quickly, and personally, I find it to be a great place to find entertaining people. It definitely has its uses.

With that said, I have to say that every one of us have been annoying to someone, somewhere, at some time. It happens. However, with certain folks, it happens more regularly than others. Look - that's fine. That's what makes us all different. It's also what makes me find you annoying.

The most common solution is unfollowing someone (or taking it a step further by blocking and reporting them for spam). Easier said than done. Sometimes you have a couple conversations with a person and fool yourself into thinking you're friends. It happens. So what to do?

TweetDeck has recently (version 0.34+) implemented an amazing feature: Global filter

A Couple Essentials

Bieber

Let's face it. Justin Bieber exists. He also commands an legion of hormone-crazed teenagers online. Add his name to that filter list, as shown above, and you should be alright though. It's actually a fortunate thing that he has a unique name. So you should be safe to filter it as a word completely.

Formspring

Formspring is a service that allows people to ask questions anonymously. Seems very popular. I've noticed that this happens among people who seem to think they're more famous than they actually are. I don't have any intention of asking you anything.

The easiest solution is to add "www.formspring" as a keyword.

Knitting

No real explanation needed for this one. Just block that keyword and be done with it.

Exaggeration and Excess-Enthusiasm

It's a tough one figuring out the ideal number of exclamation-marks. Which number is ideal? I'm not entirely sure, but 6 has worked well for me (!!!!!!)

Again, it's tough to say how many is the ideal number to filter here. My studies have shown that 5-S's (sssss) is too much.

This is usually an indication that you should probably be following more mature Tweeters. Otherwise, "meeee" is a great keyword to filter.

Affection

"<3": You're better off unfollowing this person completely.

"♥": I wish I could block this, but TweetDeck seems to have some sort of unicode limitations - you might have to put up with this kind of Tweet for the time being.

People using Twitter as an IM service

You've seen this happen. Mutual-friends reply back and forth, then keep going for about 30 or 40 tweets. Amazing. I hate you. Solution: Add both their names to the keyword filter-list with an '@' as a prefix. For example: @AnnoyingPerson

Sources worth filtering

Foursquare

Foursquare is a service that allows people to act exactly like dogs pissing on trees marking their territory. Everybody fights for the "Mayor" position at a restaurant by "checking-in" regularly.

Block it by adding "foursquare" to your 'sources' filter-list.

Twitterfeed

Some Twitter accounts are linked to blogs. Each time a new article is published, a Tweet is published at the same time. I have an RSS reader, and I'm not scared to use it.

API

API almost always is a post by a bot.

Remaining Challenges

"your" versus "you're"

Also known as the Inability to understand the difference between "your" and "you're". If done consistently, this serves as a sure-fire way of determining a person's intellectual capacity. Unfortunately, I haven't been able to find a way of filtering this kind of stupidity other than unfollowing the person completely.

High-frequency Tweeters

Again, I have no solution for this. You might just have to add them to the from-people-list.

Conclusion

This is by no means an exhaustive list. Your annoyance-threshold may vary. If you have more suggestions, please leave a comment below.

Tagged as: 2 Comments
1Jun/100

Ubuntu: Installing Apache, PHP 5, and MySQL 5

Apache

sudo apt-get install apache2

Locations:

  • HTML directory: /var/www
  • Apache2 conf: /etc/apache2/apache2.conf

PHP 5

Install PHP, and also enable the PHP and Rewrite module in Apache:

sudo apt-get install php5
sudo a2enmod php5
sudo a2enmod rewrite

Locations:

  • php.ini: /etc/php5/apache2/php.ini

MySQL 5

sudo apt-get install mysql-server
sudo apt-get install php5-mysql

Restart Apache

sudo /etc/init.d/apache2 restart
22May/100

Oracle: Recovering a Tablespace

The situation:

The database was not shutdown cleanly and a tablespace needed recovery because of an outstanding transaction that wasn’t committed.

If you simply STARTUP the database, the tablespace will still be in RECOVER mode and won’t be available.

First, startup the database in restrict mode:

1
SQL> startup restrict

List all tablespaces and check the ONLINE_STATUS:

1
2
3
4
5
6
7
8
9
10
11
SQL> SELECT tablespace_name, online_status FROM dba_data_files;
 
TABLESPACE_NAME                ONLINE_STATUS
------------------------------ ---------------
USERS                          ONLINE
UNDOTBS1                       ONLINE
SYSAUX                         ONLINE
SYSTEM                         SYSTEM
TEST                           RECOVER
 
5 ROWS selected.

In this case, the TEST tablespace requires recovery:

1
2
3
SQL> RECOVER TABLESPACE TEST;
 
Media recovery complete.

Check tablespaces again:

1
2
3
4
5
6
7
8
9
10
11
SQL> SELECT tablespace_name, online_status FROM dba_data_files;
 
TABLESPACE_NAME                ONLINE_STATUS
------------------------------ --------------
USERS                          ONLINE
UNDOTBS1                       ONLINE
SYSAUX                         ONLINE
SYSTEM                         SYSTEM
TEST                           OFFLINE
 
5 ROWS selected.

The tablespace doesn’t need further recovery at this stage and can be placed ONLINE:

1
2
3
SQL> ALTER TABLESPACE TEST ONLINE;
 
TABLESPACE altered.

Get the database out of restrict mode:

1
2
3
SQL> ALTER SYSTEM DISABLE RESTRICTED SESSION;
 
SYSTEM altered.
22May/100

Oracle: Forcing a checkpoint

A checkpoint makes sure that all changes to the database (that are still in buffers) are written to the datafiles.

1
2
3
SQL> ALTER SYSTEM CHECKPOINT;
 
SYSTEM altered.
22May/100

Oracle: Basic user-logon auditing

Oracle 8i introduced logon-triggers which could be used for auditing.

To start, create a table which will store your audit-logs (I usually do this as SYSTEM):

1
2
3
4
5
6
7
8
9
10
CREATE TABLE AUDIT$user_logs
 (
    user_id           VARCHAR2(30),
    session_id        NUMBER(8),
    host              VARCHAR2(30),
    logon_day         DATE,
    logon_time        VARCHAR2(10)
 );
 
TABLE created.

Next, create the trigger to capture the data:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CREATE OR REPLACE TRIGGER
 logon_audit_trigger
 AFTER LOGON ON DATABASE
 BEGIN
 INSERT INTO AUDIT$user_logs VALUES(
    USER,
    SYS_CONTEXT('USERENV','SESSIONID'),
    SYS_CONTEXT('USERENV','HOST'),
    SYSDATE,
    TO_CHAR(SYSDATE, 'hh24:mi:ss')
 );
 END;
 /
 
TRIGGER created.

Display Audit-data:

1
2
3
4
5
6
7
SQL> SELECT * FROM AUDIT$user_logs;
 
USER_ID         SESSION_ID HOST               LOGON_DAY LOGON_TIME
--------------- ---------- ------------------ --------- ----------
DBSNMP              123716 HOST               01-OCT-08 10:21:32
SYSTEM              123717 DOMAIN\PCNUMBER    01-OCT-08 10:21:53
SYSMAN                   0 HOST               01-OCT-08 10:21:58

Disable and Enable Logon-auditing:

1
2
3
4
ALTER TRIGGER SYSTEM.LOGON_AUDIT_TRIGGER DISABLE
/
ALTER TRIGGER SYSTEM.LOGON_AUDIT_TRIGGER ENABLE
/

To purge audit-data:

1
TRUNCATE TABLE AUDIT$user_logs
18May/100

Oracle: List all database-links

To list all db-links (must be a user with permission to select from sys.dba_db_links) in a database:

SELECT * FROM DBA_DB_LINKS;

Sample output:

1
2
3
4
5
6
SQL> SELECT * FROM DBA_DB_LINKS;
 
OWNER   DB_LINK    USERNAME   HOST    CREATED
------- ---------- ---------- ------- ----------
SYSTEM  TEST_LINK  SCOTT      TST11   26-SEP-08
SCOTT   HR_LINK    HR         TST11   26-SEP-08
Tagged as: No Comments
16May/100

Oracle: Recycle listener.log

Oracle stores a log-file (listener.log) under $ORACLE_HOME/network/log that keeps track of all connections made to the database.

Oracle keeps this file as an open file-stream, so even if you rename the file, it still keeps on growing as new connections are made.

This method will let you recycle/truncate/purge listener.log without resorting to taking the listener down which would cause a disruption to users.

The idea is to turn log_status off, create a new file, then turn log_status on again

1
2
3
4
$ lsnrctl set log_status off
$ mv listener.log listener.log.old
$ touch listener.log
$ lsnrctl set log_status on
Page 1 of 512345
Bear