Sunday, October 6, 2013

How do I troubleshoot boot problems when stuck at the Ubuntu splash screen?

http://askubuntu.com/questions/306543/how-do-i-troubleshoot-boot-problems-when-stuck-at-the-ubuntu-splash-screen


Besides the below, if the GUI does not start automatically, run "sudo apt-get install ubuntu-desktop" and then "sudo reboot".

Some keys to remember.
Alt + left arrow turns the boot splash into terminal login prompt during the boot.
Ctrl + Alt + F1 switches back to the command prompt from GUI.



How do I troubleshoot boot problems when stuck at the Ubuntu splash screen?

I was tweaking some settings on my Ubuntu 12.04 install. Specifically I was altering the default color scheme of the terminal, following these instructions
Now whenever I boot Ubuntu, I get stuck in the purple screen that says "Ubuntu" with the moving dots. If I hit ENTER Ubuntu booting continues.
I'm not asking about solving my specific problem (which is definitely caused my be doing weird things) instead I'm asking how would I go about digging into what's going on at boot? What logs should I look at? What kind of thing should I look for? How would I troubleshoot this issue? I would like to "learn how to fish" and go figure out what is probably a stupid issue.
I tried the boot repair utility, however that does not appear to do the trick. Boot repair appears to be focussed more on GRUB, which is functioning fine.
share|improve this question



There's a few things you can try. First, if I were you, I'd like to know what's happening in the background (booting in) that causes you to have to hit Enter to get it to continue on.
Try editing your GRUB load manually, so you can see what's happening during the boot and provide the error/issue that's actually happening in more detail. In a terminal window, run:
gksudo gedit /etc/default/grub
Find this line:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
and change it to:
GRUB_CMDLINE_LINUX_DEFAULT=""
Leave anything else within the quotes as-is, but remove the quiet splash portion.
Then, do, in terminal:
sudo update-grub
Then, finally just reboot. Now.. see all the loading data, and let us know what the actual problem is.
share|improve this answer

Thursday, October 3, 2013

Restore screen size and position in gVim

http://vim.wikia.com/wiki/Restore_screen_size_and_position


Copy & paste the following codes to your _gvimrc or .gvimrc.
It works good.


Restore screen size and position

 Talk0
1,603PAGES ON
THIS WIKI
Tip 1569 Printable Monobook Previous Next
created 2008 · complexity basic · author Dfishburn · version 7.0

This tip is useful if you always want Vim to startup in the same location and size as the time you exit it. Most applications (i.e. FireFox) do this already. Another reason to use this tip is if you often have more than one Vim (GUI on Windows) running. Quite often I will have one per project, each instance editing multiple buffers. When I start Vim, I name it (based on the project or tool I launched it from).
gvim myFile1 myFile2
gvim --servername MyProject filename1 filename2 filename3
gvim --servername VS_NET filename
When I re-open Vim I like its screen position and size to be the same as they were when Vim was closed. The scripts below can be added to your .vimrc file. They offer 2 configuration options which can be set at the bottom before the autocmds:
" To enable the saving and restoring of screen positions.
let g:screen_size_restore_pos = 1

" To save and restore screen for each Vim instance.
" This is useful if you routinely run more than one Vim instance.
" For all Vim to use the same settings, change this to 0.
let g:screen_size_by_vim_instance = 1

Version 1 (Vim 7 and above)Edit

This version uses Vim's readfile() and writefile() functions to access the file used to save the size/position. That in addition to the use of the split() function makes this version unusable in Vim 6.x.
if has("gui_running")
  function! ScreenFilename()
    if has('amiga')
      return "s:.vimsize"
    elseif has('win32')
      return $HOME.'\_vimsize'
    else
      return $HOME.'/.vimsize'
    endif
  endfunction

  function! ScreenRestore()
    " Restore window size (columns and lines) and position
    " from values stored in vimsize file.
    " Must set font first so columns and lines are based on font size.
    let f = ScreenFilename()
    if has("gui_running") && g:screen_size_restore_pos && filereadable(f)
      let vim_instance = (g:screen_size_by_vim_instance==1?(v:servername):'GVIM')
      for line in readfile(f)
        let sizepos = split(line)
        if len(sizepos) == 5 && sizepos[0] == vim_instance
          silent! execute "set columns=".sizepos[1]." lines=".sizepos[2]
          silent! execute "winpos ".sizepos[3]." ".sizepos[4]
          return
        endif
      endfor
    endif
  endfunction

  function! ScreenSave()
    " Save window size and position.
    if has("gui_running") && g:screen_size_restore_pos
      let vim_instance = (g:screen_size_by_vim_instance==1?(v:servername):'GVIM')
      let data = vim_instance . ' ' . &columns . ' ' . &lines . ' ' .
            \ (getwinposx()<0?0:getwinposx()) . ' ' .
            \ (getwinposy()<0?0:getwinposy())
      let f = ScreenFilename()
      if filereadable(f)
        let lines = readfile(f)
        call filter(lines, "v:val !~ '^" . vim_instance . "\\>'")
        call add(lines, data)
      else
        let lines = [data]
      endif
      call writefile(lines, f)
    endif
  endfunction

  if !exists('g:screen_size_restore_pos')
    let g:screen_size_restore_pos = 1
  endif
  if !exists('g:screen_size_by_vim_instance')
    let g:screen_size_by_vim_instance = 1
  endif
  autocmd VimEnter * if g:screen_size_restore_pos == 1 | call ScreenRestore() | endif
  autocmd VimLeavePre * if g:screen_size_restore_pos == 1 | call ScreenSave() | endif
endif

Version 2 (Vim 6 and above)Edit

Here is an alternative script which uses a regular Vim buffer to manipulate the vimsize file instead of Vim 7's readfile() and writefile() functions.
" Restore screen size and position
" Saves data in a separate file, and so works with multiple instances of Vim.
if has("gui_running")
  function! ScreenFilename()
    if has('amiga')
      return "s:.vimsize"
    elseif has('win32')
      return $HOME.'\_vimsize'
    else
      return $HOME.'/.vimsize'
    endif
  endfunction

  function! ScreenRestore()
    " - Remembers and restores winposition, columns and lines stored in
    "   a .vimsize file
    " - Must follow font settings so that columns and lines are accurate
    "   based on font size.
    if !has("gui_running")
      return
    endif
    if g:screen_size_restore_pos != 1
      return
    endif
    let vim_instance = (g:screen_size_by_vim_instance==1?(v:servername):'GVIM')
    " read any existing variables from .vimsize file
    silent! execute "sview " . escape(ScreenFilename(),'%#\ $')
    silent! execute "0/^" . vim_instance . " /"
    let vim_name  = matchstr(getline('.'), '^\w\+')
    let vim_cols  = matchstr(getline('.'), '^\w\+\s\+\zs\d\+')
    let vim_lines = matchstr(getline('.'), '^\w\+\s\+\d\+\s\+\zs\d\+')
    let vim_posx  = matchstr(getline('.'), '^\w\+\s\+\d\+\s\+\d\+\s\+\zs\d\+')
    let vim_posy  = matchstr(getline('.'), '^\w\+\s\+\d\+\s\+\d\+\s\+\d\+\s\+\zs\d\+')
    if vim_name == vim_instance
      execute "set columns=".vim_cols
      execute "set lines=".vim_lines
      silent! execute "winpos ".vim_posx." ".vim_posy
    endif
    silent! q
  endfunction

  function! ScreenSave()
    " used on exit to retain window position and size
    if !has("gui_running")
      return
    endif
    if !g:screen_size_restore_pos
      return
    endif
    let vim_instance = (g:screen_size_by_vim_instance==1?(v:servername):'GVIM')
    silent! execute "split " . escape(ScreenFilename(),'%#\ $')
    silent! execute "0/^" . vim_instance . " /"
    let vim_name  = matchstr(getline('.'), '^\w\+')
    if vim_name == vim_instance
      delete _
    endif
    $put = vim_instance . ' ' . &columns . ' ' . &lines . ' ' .
          \ (getwinposx()<0?0:getwinposx()) . ' ' .
          \ (getwinposy()<0?0:getwinposy())
    silent! x!
  endfunction

  if !exists('g:screen_size_restore_pos')
    let g:screen_size_restore_pos = 1
  endif
  if !exists('g:screen_size_by_vim_instance')
    let g:screen_size_by_vim_instance = 1
  endif
  autocmd VimEnter * call ScreenRestore()
  autocmd VimLeavePre * call ScreenSave()
endif

CommentsEdit

Feel free to add comments here for script improvements.
For the Version 2 script, since it uses Vim buffers for the manipulations it would be useful to disable all autocmds before opening splitting the buffer and re-enable them when closing the buffer. Many people have lots of plugins installed which can make opening buffers somewhat expensive (and therefore unnecessary time delay). Using the Vim 7 readfile() and writefile() functions avoid this overhead.

Android Source Repo GPG public key not found

http://stackoverflow.com/questions/19126603/android-source-repo-gpg-public-key-not-found
\
the guide about repo on source.android.com fails.
Getting another repo is the answer.



Android Source Repo GPG public key not found

I am running Linux Mint 14 and trying to download the android source. I followed the instruction for setting up the environment and when I was trying to get the source with repo, I got the following error.
...
 * [new tag]         v1.9.4     -> v1.9.4
 * [new tag]         v1.9.5     -> v1.9.5
 * [new tag]         v1.9.6     -> v1.9.6

object e76efdd7b342577c40aa271fa5ded9d66a783a9b
type commit
tag v1.12.4
tagger Conley Owens <cco3@android.com> 1380645867 -0700

repo 1.12.4

gpg: Signature made Tue 01 Oct 2013 09:44:27 AM PDT using RSA key ID 692B382C
gpg: Can't check signature: public key not found
error: could not verify the tag 'v1.12.4'
I've tried importing the public key from the instruction, try generating my own GPG keys, as well as symbolic linking the directories ~/.gnupg and ~/.repoconfig/gnupg both ways and I still get the same error. I also tried to deleting the ~/.repoconfig and ~/.gnupg and still no luck.
Any help would be appreciated.
share|improve this question
I'm having the same issue. Tried alot of different solutions mentioned everywhere: delete the repoconfig dir, import a key, git tag -v 1.12.4 can't wrap my head aroundMarijn yesterday
i found a solution here:http://www.marshut.com/wrrts/repo-release-1-12-4.html
[quote] Sorry, I realized today that we didn't upload the newest version of the launcher. I'll update the documentation. For the meantime, please use:
curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo chmod a+x ~/bin/repo
sha1 e197cb48ff4ddda4d11f23940d316e323b29671c
If verification errors persist, you can blow away (or move) your ~/.repoconfig dir to ensure the new public keys are imported.
Sorry for the trouble everyone! [/quote]
share|improve this answer
yup, that fixed it...YTKColumba yesterday
seems that repo 1.12.4 was only released a few hours agoMarijn yesterday
Seconding (thirding?) this. Replaced the installed version (and B2G version) of repo with this and things are back up and running.Jostein Kjønigsen yesterday

Wednesday, October 2, 2013

How MMS, Multi-media Messaging Service works ?

From wikipedia...only technical part is cited.
http://en.wikipedia.org/wiki/Multimedia_Messaging_Service

Some key points are...
1. MMSC(Multimedia Messaging Service Centre) works as the core function.
2. The end-most system in carrier-side is HTTP-capable.
3. Using SMS control-channel, carrier network checks the capability of mobile user's handset for MMS. Url for the MMS is contained in the SMS control message.
4. The MMS-capable handset will pull the MMS content from carrier network using MMS URL.
5. The MMS-incapable handset may receive the MMS URL as SMS text body, which can be a link to a web browser.
6. MMS may be encoded in MIME or MIME-like format and may be converted into other format by carrier network function so that the mobile user handset can process.

fyi

Technical description[edit]

MMS messages are delivered in a completely different way from SMS. The first step is for the sending device to encode the multimedia content in a fashion similar to sending a MIME e-mail (MIME content formats are defined in the MMS Message Encapsulation specification). The message is then forwarded to the carrier's MMS store and forward server, known as the MMSC (Multimedia Messaging Service Centre). If the receiver is on another carrier, the relay forwards the message to the recipient's carrier using the Internet.[5]
Once the MMSC has received a message, it first determines whether the receiver's handset is "MMS capable", that it supports the standards for receiving MMS. If so, the content is extracted and sent to a temporary storage server with an HTTP front-end. An SMS "control message" containing the URL of the content is then sent to the recipient's handset to trigger the receiver's WAP browser to open and receive the content from the embedded URL. Several other messages are exchanged to indicate status of the delivery attempt.[6] Before delivering content, some MMSCs also include a conversion service that will attempt to modify the multimedia content into a format suitable for the receiver. This is known as "content adaptation".
If the receiver's handset is not MMS capable, the message is usually delivered to a web based service from where the content can be viewed from a normal internet browser. The URL for the content is usually sent to the receiver's phone in a normal text message. This behaviour is usually known as the "legacy experience" since content can still be received by a phone number, even if the phone itself does not support MMS.
The method for determining whether a handset is MMS capable is not specified by the standards. A database is usually maintained by the operator, and in it each mobile phone number is marked as being associated with a legacy handset or not. It can be a touch 'hit or miss', since customers can change their handset at will and this database is not usually updated dynamically.
MMS does not utilize one's own operator maintained data plan to distribute multimedia content. Operator maintained data plans are only used when message included links (if any) are explicitly clicked.
E-mail and web-based gateways to the MMS (and SMS) system are common. On the reception side, the content servers can typically receive service requests both from WAP and normal HTTP browsers, so delivery via the web is simple. For sending from external sources to handsets, most carriers allow MIME encoded message to be sent to the receiver's phone number with a special domain. An example of this would be PTN@messaging.carrier.com, where PTN is the public telephone number. Typically the special domain name is carrier specific.