mirror of
https://github.com/samuelclay/NewsBlur.git
synced 2025-09-18 21:50:56 +00:00
Merge branch 'master' into dejal
This commit is contained in:
commit
c7ef07c063
164 changed files with 2965 additions and 1387 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -52,6 +52,7 @@ docker/haproxy/haproxy.consul.cfg
|
|||
docker/nginx/nginx.consul.conf
|
||||
docker/prometheus/prometheus.yml
|
||||
docker/redis/redis_replica.conf
|
||||
docker/postgres/postgres.conf
|
||||
|
||||
# ----------------------
|
||||
# Android
|
||||
|
|
1
Makefile
1
Makefile
|
@ -76,6 +76,7 @@ list:
|
|||
- doctl -t `cat /srv/secrets-newsblur/keys/digital_ocean.token` compute droplet list
|
||||
sizes:
|
||||
- doctl -t `cat /srv/secrets-newsblur/keys/digital_ocean.token` compute size list
|
||||
size: sizes
|
||||
ratelimit:
|
||||
- doctl -t `cat /srv/secrets-newsblur/keys/digital_ocean.token` account ratelimit
|
||||
ansible-deps:
|
||||
|
|
|
@ -7,6 +7,7 @@ git_secrets_repo: ssh://git@github.com/samuelclay/newsblur-secrets
|
|||
create_user: nb
|
||||
local_key: "{{ lookup('file', lookup('env','HOME') + '/.ssh/id_rsa.pub') }}"
|
||||
copy_local_key: "{{ lookup('file', '/srv/secrets-newsblur/keys/docker.key.pub') }}"
|
||||
postgres_password: "{{ lookup('ini', 'postgres_password section=admin file=/srv/secrets-newsblur/configs/postgres_auth.ini') }}"
|
||||
mongodb_keyfile: "{{ lookup('file', '/srv/secrets-newsblur/keys/mongodb_keyfile.key') }}"
|
||||
mongodb_username: "{{ lookup('ini', 'mongodb_username section=admin file=/srv/secrets-newsblur/configs/mongodb_auth.ini') }}"
|
||||
mongodb_password: "{{ lookup('ini', 'mongodb_password section=admin file=/srv/secrets-newsblur/configs/mongodb_auth.ini') }}"
|
||||
|
|
|
@ -18,3 +18,4 @@
|
|||
- {role: 'node-exporter', tags: ['node-exporter', 'metrics']}
|
||||
- {role: 'postgres', tags: 'postgres'}
|
||||
- {role: 'monitor', tags: 'monitor'}
|
||||
- {role: 'backups', tags: 'backups'}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
file:
|
||||
path: /srv/newsblur/backups
|
||||
state: directory
|
||||
|
||||
|
||||
- name: Ensure pip installed
|
||||
become: yes
|
||||
package:
|
||||
|
@ -17,10 +17,10 @@
|
|||
- name: Set backup vars
|
||||
set_fact:
|
||||
redis_story_filename: backup_redis_story_2021-04-13-04-00.rdb.gz
|
||||
postgres_filename: backup_postgresql_2021-03-15-04-00.sql.gz
|
||||
postgres_filename: backup_postgresql_2021-12-17-20-25.sql.gz
|
||||
mongo_filename: backup_mongo_2021-03-15-04-00.tgz
|
||||
redis_filename: backup_redis_2021-03-15-04-00.rdb.gz
|
||||
tags: restore_postgres, restore_mongo, restore_redis, restore_redis_story
|
||||
tags: never, restore_postgres, restore_mongo, restore_redis, restore_redis_story
|
||||
|
||||
- name: Download archives
|
||||
amazon.aws.aws_s3:
|
||||
|
@ -32,29 +32,29 @@
|
|||
aws_access_key: "{{ lookup('ini', 'aws_access_key_id section=default file=/srv/secrets-newsblur/keys/aws.s3.token') }}"
|
||||
aws_secret_key: "{{ lookup('ini', 'aws_secret_access_key section=default file=/srv/secrets-newsblur/keys/aws.s3.token') }}"
|
||||
with_items:
|
||||
- dir: /redis_story/
|
||||
file: "{{ redis_story_filename }}"
|
||||
# - dir: /postgres/
|
||||
# file: "{{ postgres_filename }}"
|
||||
# - dir: /redis_story/
|
||||
# file: "{{ redis_story_filename }}"
|
||||
- dir: /postgres/
|
||||
file: "{{ postgres_filename }}"
|
||||
# - dir: /mongo/
|
||||
# file: "{{ mongo_filename }}"
|
||||
# - dir: /backup_redis/
|
||||
# file: "{{ redis_filename }}"
|
||||
tags: restore_postgres, restore_mongo, restore_redis, restore_redis_story
|
||||
tags: never, restore_postgres, restore_mongo, restore_redis, restore_redis_story
|
||||
|
||||
- name: Restore postgres
|
||||
block:
|
||||
- name: move postgres archive
|
||||
become: yes
|
||||
command: "mv -f /srv/newsblur/backups/{{ postgres_filename }} /srv/newsblur/docker/volumes/postgres"
|
||||
command: "mv -f /srv/newsblur/backups/{{ postgres_filename }} /srv/newsblur/docker/volumes/postgres/"
|
||||
ignore_errors: yes
|
||||
|
||||
- name: pg_restore
|
||||
become: yes
|
||||
command: |
|
||||
docker exec -i db_postgres bash -c
|
||||
"pg_restore -U newsblur --role=newsblur --dbname=newsblur /var/lib/postgresql/data/{{ postgres_filename }}"
|
||||
tags: never,restore_postgres
|
||||
docker exec -i postgres bash -c
|
||||
"pg_restore -U newsblur --role=newsblur --dbname=newsblur /var/lib/postgresql/{{ postgres_filename }}"
|
||||
tags: never, restore_postgres
|
||||
|
||||
- name: Restore mongo
|
||||
block:
|
||||
|
@ -72,7 +72,7 @@
|
|||
command: |
|
||||
docker exec -i db_mongo bash -c
|
||||
"mongorestore --port 29019 --drop /data/db/{{ mongo_filename|regex_replace('.tgz$', '') }}/"
|
||||
tags: never,restore_mongo
|
||||
tags: never, restore_mongo
|
||||
|
||||
- name: Restore redis-story
|
||||
block:
|
||||
|
@ -80,4 +80,4 @@
|
|||
become: yes
|
||||
command: "mv -f /srv/newsblur/backups/{{ redis_story_filename }} /srv/newsblur/docker/volumes/redis/dump.rdb"
|
||||
ignore_errors: yes
|
||||
tags: never,restore_redis_story
|
||||
tags: never, restore_redis_story
|
||||
|
|
|
@ -33,13 +33,13 @@
|
|||
become: yes
|
||||
shell:
|
||||
# chdir: "/mnt/{{ inventory_hostname|regex_replace('db-', '')|regex_replace('-', '') }}"
|
||||
cmd: sysbench fileio --file-total-size=150G prepare
|
||||
cmd: sysbench fileio --file-total-size=50G prepare
|
||||
|
||||
- name: Run sysbench disk i/o
|
||||
become: yes
|
||||
shell:
|
||||
# chdir: "/mnt/{{ inventory_hostname|regex_replace('db-', '')|regex_replace('-', '') }}"
|
||||
cmd: sysbench fileio --file-total-size=150G --file-test-mode=rndrw --time=300 --max-requests=0 run
|
||||
cmd: sysbench fileio --file-total-size=50G --file-test-mode=rndrw --time=300 --max-requests=0 run
|
||||
register: io
|
||||
|
||||
- name: Cleanup sysbench
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
{
|
||||
"iptables": false
|
||||
|
||||
}
|
||||
|
|
|
@ -11,8 +11,8 @@
|
|||
networks:
|
||||
- name: newsblurnet
|
||||
env:
|
||||
MONGODB_URI: 'mongodb://{{ inventory_hostname }}.node.nyc1.consul:27017/admin?'
|
||||
# MONGODB_URI: 'mongodb://{{ mongodb_username }}:{{ mongodb_password }}@{{ inventory_hostname }}.node.nyc1.consul:27017/admin?authSource=admin'
|
||||
# MONGODB_URI: 'mongodb://{{ inventory_hostname }}.node.nyc1.consul:27017/admin?'
|
||||
MONGODB_URI: 'mongodb://{{ mongodb_username }}:{{ mongodb_password }}@{{ inventory_hostname }}.node.nyc1.consul:27017/admin?authSource=admin'
|
||||
ports:
|
||||
- '9216:9216'
|
||||
|
||||
|
|
|
@ -32,7 +32,17 @@
|
|||
fstype: xfs
|
||||
opts: defaults,discard
|
||||
state: mounted
|
||||
when: false
|
||||
|
||||
- name: Set permissions on volume
|
||||
become: yes
|
||||
file:
|
||||
path: "/mnt/{{ inventory_hostname | regex_replace('db-|-', '') }}"
|
||||
state: directory
|
||||
owner: 999
|
||||
group: 999
|
||||
recurse: yes
|
||||
|
||||
when: (inventory_hostname | regex_replace('[0-9]+', '')) in ['db-mongo-secondary', 'db-mongo-analytics']
|
||||
|
||||
- name: Copy MongoDB keyfile
|
||||
become: yes
|
||||
|
@ -98,22 +108,53 @@
|
|||
ports:
|
||||
- "27017:27017"
|
||||
command: --config /etc/mongod.conf
|
||||
user: 1000:1001
|
||||
user: 999:999
|
||||
volumes:
|
||||
# - /mnt/{{ inventory_hostname | regex_replace('db-|-', '') }}:/data/db
|
||||
- /mnt/{{ inventory_hostname | regex_replace('db-|-', '') }}:/data/db
|
||||
- /srv/newsblur/ansible/roles/mongo/templates/mongo.analytics.conf:/etc/mongod.conf
|
||||
- /srv/newsblur/config/mongodb_keyfile.key:/srv/newsblur/config/mongodb_keyfile.key
|
||||
- /var/log/mongodb/:/var/log/mongodb/
|
||||
- /opt/mongo/newsblur/backup/:/backup/
|
||||
when: (inventory_hostname | regex_replace('[0-9]+', '')) == 'db-mongo-analytics'
|
||||
|
||||
- name: Create mongo database user
|
||||
shell:
|
||||
# Don't use this line below as it means there is already a username and password, so no need to set one
|
||||
# sleep 2; docker exec mongo mongo -u "{{ mongodb_username }}" -p "{{ mongodb_password }}" --eval '
|
||||
cmd: >-
|
||||
sleep 2; docker exec mongo mongo --eval '
|
||||
db.createUser(
|
||||
{
|
||||
user: "{{ mongodb_username }}",
|
||||
pwd: "{{ mongodb_password }}",
|
||||
roles: [
|
||||
{ role: "root", db: "admin" },
|
||||
]
|
||||
}
|
||||
)' admin
|
||||
when: (inventory_hostname | regex_replace('[0-9]+', '')) == 'db-mongo-analytics'
|
||||
register: auth_result
|
||||
changed_when:
|
||||
- auth_result.rc == 0
|
||||
failed_when:
|
||||
- "'Successfully added user' not in auth_result.stdout"
|
||||
- "'already exists' not in auth_result.stdout"
|
||||
- "'there are no users authenticated' not in auth_result.stdout"
|
||||
tags:
|
||||
- mongoauth
|
||||
|
||||
# - debug:
|
||||
# msg: "{{ auth_result }}"
|
||||
# tags:
|
||||
# - mongoauth
|
||||
|
||||
- name: Register mongo in consul
|
||||
tags: consul
|
||||
become: yes
|
||||
template:
|
||||
src: consul_service.json
|
||||
dest: /etc/consul.d/mongo.json
|
||||
when: (inventory_hostname | regex_replace('[0-9]+', '')) in ['db-mongo', 'db-mongo-primary', 'db-mongo-secondary']
|
||||
when: (inventory_hostname | regex_replace('[0-9]+', '')) in ['db-mongo-primary', 'db-mongo-secondary']
|
||||
notify:
|
||||
- reload consul
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
"port": 27017,
|
||||
"checks": [{
|
||||
"id": "mongo-analytics-ping",
|
||||
"http": "http://{{ ansible_ssh_host }}:5579/db_check/mongo_analytics?consul=1,
|
||||
"http": "http://{{ ansible_ssh_host }}:5579/db_check/mongo_analytics?consul=1",
|
||||
"interval": "15s"
|
||||
}]
|
||||
}
|
||||
|
|
|
@ -7,3 +7,8 @@
|
|||
name: consul
|
||||
state: reloaded
|
||||
listen: reload consul
|
||||
|
||||
- name: reload postgres config
|
||||
become: yes
|
||||
command: docker exec postgres pg_ctl reload
|
||||
listen: reload postgres
|
||||
|
|
|
@ -1,20 +1,38 @@
|
|||
---
|
||||
- name: Start postgres container
|
||||
|
||||
- name: Template postgresql-13.conf file
|
||||
template:
|
||||
src: /srv/newsblur/docker/postgres/postgresql-13.conf.j2
|
||||
dest: /srv/newsblur/docker/postgres/postgresql-13.conf
|
||||
notify: reload postgres
|
||||
register: updated_config
|
||||
|
||||
- name: Start postgres docker containers
|
||||
become: yes
|
||||
docker_container:
|
||||
name: postgres
|
||||
image: postgres:13.1
|
||||
image: postgres:13
|
||||
state: started
|
||||
hostname: "{{ inventory_hostname }}"
|
||||
container_default_behavior: no_defaults
|
||||
command: postgres -D /var/lib/postgresql/pgdata -c config_file=/etc/postgresql/postgresql.conf
|
||||
env:
|
||||
POSTGRES_USER: newsblur
|
||||
POSTGRES_PASSWORD: newsblur
|
||||
restart_policy: unless-stopped
|
||||
POSTGRES_PASSWORD: "{{ postgres_password }}"
|
||||
hostname: "{{ inventory_hostname }}"
|
||||
networks_cli_compatible: yes
|
||||
# network_mode: host
|
||||
network_mode: default
|
||||
networks:
|
||||
- name: newsblurnet
|
||||
aliases:
|
||||
- postgres
|
||||
ports:
|
||||
- '5432:5432'
|
||||
- 5432:5432
|
||||
volumes:
|
||||
- /srv/newsblur/docker/volumes/postgres:/var/lib/postgresql/data
|
||||
- /backup/:/var/lib/postgresql/backup/
|
||||
- /srv/newsblur/docker/volumes/postgres:/var/lib/postgresql
|
||||
- /srv/newsblur/docker/postgres/postgresql-13.conf:/etc/postgresql/postgresql.conf
|
||||
- /srv/newsblur/docker/postgres/postgres_hba-13.conf:/etc/postgresql/pg_hba.conf
|
||||
- /backup/:/var/lib/postgresql/backup/
|
||||
restart_policy: unless-stopped
|
||||
|
||||
- name: Register postgres in consul
|
||||
tags: consul
|
||||
|
@ -25,12 +43,6 @@
|
|||
notify:
|
||||
- reload consul
|
||||
|
||||
- name: Register backup bucket
|
||||
become: no
|
||||
run_once: yes
|
||||
register: backup_bucket
|
||||
local_action: command /srv/newsblur/ansible/roles/postgres-exporter/tasks/get_credentials.py s3_bucket
|
||||
|
||||
- name: Add sanity checkers cronjob for disk usage
|
||||
become: yes
|
||||
cron:
|
||||
|
@ -56,10 +68,9 @@
|
|||
BACKUP_FILE=backup_postgresql_${NOW}.sql;
|
||||
sudo docker exec -it postgres
|
||||
/usr/lib/postgresql/13/bin/pg_dump -U newsblur -h 127.0.0.1 -Fc newsblur > backup/$BACKUP_FILE;
|
||||
BUCKET={{ backup_bucket.stdout }};
|
||||
sudo docker run --rm -it
|
||||
-v /srv/newsblur:/srv/newsblur
|
||||
-v /backup/:/backup/
|
||||
--network=newsblurnet
|
||||
newsblur/newsblur_python3
|
||||
/srv/newsblur/utils/backups/backup_psql.py $BUCKET
|
||||
python /srv/newsblur/utils/backups/backup_psql.py
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"service": {
|
||||
"name": "db-postgres",
|
||||
"name": "db-postgres-staging",
|
||||
"tags": [
|
||||
"db"
|
||||
],
|
||||
|
|
|
@ -1,4 +1,8 @@
|
|||
---
|
||||
- name: Add a vm.overcommit_memory setting at the end of the sysctl.conf
|
||||
become: yes
|
||||
sysctl: name=vm.overcommit_memory value=1 state=present reload=yes
|
||||
|
||||
- name: Template redis_replica.conf file
|
||||
template:
|
||||
src: /srv/newsblur/docker/redis/redis_replica.conf.j2
|
||||
|
@ -6,6 +10,20 @@
|
|||
notify: restart redis
|
||||
register: updated_config
|
||||
|
||||
- name: Turning off secondary for redis by deleting redis_replica.conf
|
||||
copy:
|
||||
dest: /srv/newsblur/docker/redis/redis_replica.conf
|
||||
content: ""
|
||||
tags:
|
||||
# - never
|
||||
- replicaofnoone
|
||||
|
||||
- name: Setting Redis REPLICAOF NO ONE
|
||||
shell: docker exec redis redis-cli REPLICAOF NO ONE
|
||||
tags:
|
||||
# - never
|
||||
- replicaofnoone
|
||||
|
||||
- name: Start redis docker containers
|
||||
become: yes
|
||||
docker_container:
|
||||
|
@ -30,16 +48,15 @@
|
|||
- /srv/newsblur/docker/volumes/redis:/data
|
||||
- /srv/newsblur/docker/redis/redis.conf:/usr/local/etc/redis/redis_server.conf
|
||||
- /srv/newsblur/docker/redis/redis_replica.conf:/usr/local/etc/redis/redis_replica.conf
|
||||
- /srv/newsblur/docker/volumes/redis.var.lib:/var/lib/redis
|
||||
|
||||
# - name: Register redis in consul
|
||||
# become: yes
|
||||
# template:
|
||||
# src: consul_service.json
|
||||
# dest: /etc/consul.d/redis.json
|
||||
# notify:
|
||||
# - reload consul
|
||||
# tags: consul
|
||||
- name: Register redis in consul
|
||||
become: yes
|
||||
template:
|
||||
src: consul_service.json
|
||||
dest: /etc/consul.d/redis.json
|
||||
notify:
|
||||
- reload consul
|
||||
tags: consul
|
||||
|
||||
- name: Add sanity checkers cronjob for disk usage
|
||||
become: yes
|
||||
|
@ -85,7 +102,7 @@
|
|||
job: >
|
||||
docker run --rm
|
||||
-v /srv/newsblur:/srv/newsblur
|
||||
-v /srv/newsblur/docker/volumes/redis.var.lib/dump.rdb:/var/lib/redis/dump.rdb
|
||||
-v /srv/newsblur/docker/volumes/redis/dump.rdb:/data/dump.rdb
|
||||
--network=newsblurnet
|
||||
--hostname={{ ansible_hostname }}
|
||||
newsblur/newsblur_python3 /srv/newsblur/utils/backups/backup_redis.py
|
||||
newsblur/newsblur_python3 python /srv/newsblur/utils/backups/backup_redis.py
|
||||
|
|
6
ansible/roles/ufw/handlers/main.yml
Normal file
6
ansible/roles/ufw/handlers/main.yml
Normal file
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
- name: restart ufw
|
||||
become: yes
|
||||
service:
|
||||
name: ufw
|
||||
state: restarted
|
|
@ -46,7 +46,7 @@
|
|||
- firewall
|
||||
- ufw
|
||||
|
||||
- name: Allow all access from inventory hosts with docker
|
||||
- name: Allow all access from inventory hosts
|
||||
become: yes
|
||||
ufw:
|
||||
rule: allow
|
||||
|
@ -57,6 +57,55 @@
|
|||
- firewall
|
||||
- ufw
|
||||
|
||||
- name: Allow all access from inventory hosts with docker
|
||||
become: yes
|
||||
ufw:
|
||||
rule: allow
|
||||
route: yes
|
||||
src: '{{ item }}'
|
||||
with_items: "{{ groups['NewsBlur_Docker'] | map('extract', hostvars, ['ansible_host']) }}"
|
||||
when: "'oldandnew' not in groups"
|
||||
tags:
|
||||
- firewall
|
||||
- ufw
|
||||
|
||||
# Code from https://stackoverflow.com/a/51741599/8717: "What is the best practice of docker + ufw under Ubuntu"
|
||||
- name: Solving UFW and Docker issues by adding ufw after.rules
|
||||
become: yes
|
||||
blockinfile:
|
||||
dest: /etc/ufw/after.rules
|
||||
state: present
|
||||
block: |
|
||||
# BEGIN UFW AND DOCKER
|
||||
*filter
|
||||
:ufw-user-forward - [0:0]
|
||||
:ufw-docker-logging-deny - [0:0]
|
||||
:DOCKER-USER - [0:0]
|
||||
-A DOCKER-USER -j ufw-user-forward
|
||||
|
||||
-A DOCKER-USER -j RETURN -s 10.0.0.0/8
|
||||
-A DOCKER-USER -j RETURN -s 172.16.0.0/12
|
||||
-A DOCKER-USER -j RETURN -s 192.168.0.0/16
|
||||
|
||||
-A DOCKER-USER -p udp -m udp --sport 53 --dport 1024:65535 -j RETURN
|
||||
|
||||
-A DOCKER-USER -j ufw-docker-logging-deny -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 192.168.0.0/16
|
||||
-A DOCKER-USER -j ufw-docker-logging-deny -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 10.0.0.0/8
|
||||
-A DOCKER-USER -j ufw-docker-logging-deny -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 172.16.0.0/12
|
||||
-A DOCKER-USER -j ufw-docker-logging-deny -p udp -m udp --dport 0:32767 -d 192.168.0.0/16
|
||||
-A DOCKER-USER -j ufw-docker-logging-deny -p udp -m udp --dport 0:32767 -d 10.0.0.0/8
|
||||
-A DOCKER-USER -j ufw-docker-logging-deny -p udp -m udp --dport 0:32767 -d 172.16.0.0/12
|
||||
|
||||
-A DOCKER-USER -j RETURN
|
||||
|
||||
-A ufw-docker-logging-deny -j LOG --log-prefix "[UFW DOCKER BLOCK] "
|
||||
-A ufw-docker-logging-deny -j DROP
|
||||
|
||||
COMMIT
|
||||
# END UFW AND DOCKER
|
||||
tags: docker
|
||||
notify: restart ufw
|
||||
|
||||
- name: Start ufw
|
||||
become: yes
|
||||
ufw: state=enabled
|
||||
|
|
|
@ -7,6 +7,7 @@ class LoadTimes(View):
|
|||
from apps.statistics.models import MStatistics
|
||||
|
||||
data = {
|
||||
'feed_loadtimes_1min': MStatistics.get('last_1_min_time_taken'),
|
||||
'feed_loadtimes_avg_hour': MStatistics.get('latest_avg_time_taken'),
|
||||
'feeds_loaded_hour': MStatistics.get('latest_sites_loaded'),
|
||||
}
|
||||
|
|
|
@ -57,7 +57,7 @@ class MStatistics(mongo.Document):
|
|||
elif key in ('feeds_fetched', 'premium_users', 'standard_users', 'latest_sites_loaded',
|
||||
'max_sites_loaded', 'max_stories_shared'):
|
||||
values[key] = int(value)
|
||||
elif key in ('latest_avg_time_taken', 'max_avg_time_taken', 'last_5_min_time_taken'):
|
||||
elif key in ('latest_avg_time_taken', 'max_avg_time_taken', 'last_1_min_time_taken'):
|
||||
values[key] = float(value)
|
||||
|
||||
values['total_sites_loaded'] = sum(values['sites_loaded']) if 'sites_loaded' in values else 0
|
||||
|
@ -119,11 +119,11 @@ class MStatistics(mongo.Document):
|
|||
now = round_time(datetime.datetime.now(), round_to=60)
|
||||
sites_loaded = []
|
||||
avg_time_taken = []
|
||||
last_5_min_time_taken = 0
|
||||
last_1_min_time_taken = 0
|
||||
r = redis.Redis(connection_pool=settings.REDIS_STATISTICS_POOL)
|
||||
|
||||
for hour in range(24):
|
||||
start_hours_ago = now - datetime.timedelta(hours=hour+1)
|
||||
for hours_ago in range(24):
|
||||
start_hours_ago = now - datetime.timedelta(hours=hours_ago+1)
|
||||
|
||||
pipe = r.pipeline()
|
||||
for m in range(60):
|
||||
|
@ -137,8 +137,8 @@ class MStatistics(mongo.Document):
|
|||
counts = [int(c) for c in times[::2] if c]
|
||||
avgs = [float(a) for a in times[1::2] if a]
|
||||
|
||||
if hour == 0:
|
||||
last_5_min_time_taken = round(sum(avgs[:1]) / max(1, sum(counts[:1])), 2)
|
||||
if hours_ago == 0:
|
||||
last_1_min_time_taken = round(sum(avgs[:1]) / max(1, sum(counts[:1])), 2)
|
||||
|
||||
if counts and avgs:
|
||||
count = max(1, sum(counts))
|
||||
|
@ -160,7 +160,7 @@ class MStatistics(mongo.Document):
|
|||
('latest_avg_time_taken', avg_time_taken[-1]),
|
||||
('max_sites_loaded', max(sites_loaded)),
|
||||
('max_avg_time_taken', max(1, max(avg_time_taken))),
|
||||
('last_5_min_time_taken', last_5_min_time_taken),
|
||||
('last_1_min_time_taken', last_1_min_time_taken),
|
||||
)
|
||||
for key, value in values:
|
||||
cls.objects(key=key).update_one(upsert=True, set__key=key, set__value=value)
|
||||
|
|
|
@ -5,6 +5,9 @@
|
|||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" />
|
||||
|
||||
{%- seo -%}
|
||||
<link rel="stylesheet" href="{{ "/assets/main.css" | relative_url }}">
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>A New Logo for a New Blog | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="A New Logo for a New Blog" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Explaining Intelligence | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Explaining Intelligence" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Where We Are in April | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Where We Are in April" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Make your own feed reader with NewsBlur’s new API | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Make your own feed reader with NewsBlur’s new API" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Blar: A new Android app for NewsBlur | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Blar: A new Android app for NewsBlur" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Customizing the reader, step 1: story titles | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Customizing the reader, step 1: story titles" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>A Social Feed Reader | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="A Social Feed Reader" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>2011: Year in Review | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="2011: Year in Review" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>SSL & Stripe.js | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="SSL & Stripe.js" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>From project to profession: going indie on NewsBlur | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="From project to profession: going indie on NewsBlur" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>New mobile app for NewsBlur: Web Feeds for Nokia MeeGo | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="New mobile app for NewsBlur: Web Feeds for Nokia MeeGo" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Knight News Challenge: NewsBlur | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Knight News Challenge: NewsBlur" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Building real-time feed updates for NewsBlur with Redis and WebSockets | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Building real-time feed updates for NewsBlur with Redis and WebSockets" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Introducing Blurblogs, Roy, and Y Combinator | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Introducing Blurblogs, Roy, and Y Combinator" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Take it to the couch with the NewsBlur iPad app | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Take it to the couch with the NewsBlur iPad app" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Giving Life to “The People Have Spoken” | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Giving Life to “The People Have Spoken”" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Do the robot: the official NewsBlur Android app is here | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Do the robot: the official NewsBlur Android app is here" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Extreme makeover: NewsBlur iOS app edition | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Extreme makeover: NewsBlur iOS app edition" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Time for some free NewsBlur swag! | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Time for some free NewsBlur swag!" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>The sharing bookmarklet: bringing your online explorations to NewsBlur | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="The sharing bookmarklet: bringing your online explorations to NewsBlur" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>A blurblog of one’s own: new privacy controls | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="A blurblog of one’s own: new privacy controls" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Three Months to Scale NewsBlur | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Three Months to Scale NewsBlur" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>The NewsBlur Redesign | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="The NewsBlur Redesign" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Keyboard Shortcuts Manager | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Keyboard Shortcuts Manager" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Read NewsBlur on your Mac with the new ReadKit | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Read NewsBlur on your Mac with the new ReadKit" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Text view comes to the NewsBlur iOS app | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Text view comes to the NewsBlur iOS app" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>NewsBlur Puzzle T-shirt 2013 | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="NewsBlur Puzzle T-shirt 2013" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Simple Search for Feeds, Saved Stories, and Blurblogs | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Simple Search for Feeds, Saved Stories, and Blurblogs" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Mark as read by number of days and other improvements | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Mark as read by number of days and other improvements" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Upping unread stories to 30 days for premium accounts | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Upping unread stories to 30 days for premium accounts" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Offline reading with the NewsBlur iOS app | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Offline reading with the NewsBlur iOS app" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>The NewsBlur iPhone and iPad app meets iOS 7 | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="The NewsBlur iPhone and iPad app meets iOS 7" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Version 3.0 of the NewsBlur Android App | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Version 3.0 of the NewsBlur Android App" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Background updates and dynamic font sizing on the NewsBlur iOS app | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Background updates and dynamic font sizing on the NewsBlur iOS app" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Faster parallel network requests for version 3.5 of the NewsBlur Android app | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Faster parallel network requests for version 3.5 of the NewsBlur Android app" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Three new features for the web: syntax highlighting for source code, adjustable video widths, and footnotes | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Three new features for the web: syntax highlighting for source code, adjustable video widths, and footnotes" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Saved story tagging | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Saved story tagging" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Connect NewsBlur to dozens of web services with IFTTT | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Connect NewsBlur to dozens of web services with IFTTT" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>NewsBlur iOS 4.0 features a new dashboard, gestures and sharing controls | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="NewsBlur iOS 4.0 features a new dashboard, gestures and sharing controls" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Google Reader announced its shutdown exactly a year ago | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Google Reader announced its shutdown exactly a year ago" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>The new font and style manager | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="The new font and style manager" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Unread is a new iOS app with NewsBlur support | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Unread is a new iOS app with NewsBlur support" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Full text search across all of your subscriptions and folders | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Full text search across all of your subscriptions and folders" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Use the new Saved Stories view to find saved stories by site | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Use the new Saved Stories view to find saved stories by site" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Temporarily mute sites | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Temporarily mute sites" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Read what you’ve read recently with the new recently read stories feed | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Read what you’ve read recently with the new recently read stories feed" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Adjust the font size of feed and story titles | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Adjust the font size of feed and story titles" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Reeder and NewsBlur, sitting in a tree… | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Reeder and NewsBlur, sitting in a tree…" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>A Downtime Irony | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="A Downtime Irony" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>NewsBlur’s 2014 t-shirt on sale for this week only | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="NewsBlur’s 2014 t-shirt on sale for this week only" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>NewsBlur iOS v4.5: iPhone 6 and iOS 8, full bleed images, alt text, and more | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="NewsBlur iOS v4.5: iPhone 6 and iOS 8, full bleed images, alt text, and more" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>A new way to use the Story view while on https (SSL) | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="A new way to use the Story view while on https (SSL)" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Offline reading and a dark theme on the Android app | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Offline reading and a dark theme on the Android app" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>The iOS app gets search and saved story tagging | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="The iOS app gets search and saved story tagging" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Organize your subscriptions with the new Organizer | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Organize your subscriptions with the new Organizer" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Bigger story previews with the new Grid view | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Bigger story previews with the new Grid view" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>A real solution to the deprecated YouTube API | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="A real solution to the deprecated YouTube API" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Reply to shared stories that have no comment | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Reply to shared stories that have no comment" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Read Stories feed and a rewritten networking stack on v4.3.0 of the NewsBlur Android App | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Read Stories feed and a rewritten networking stack on v4.3.0 of the NewsBlur Android App" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Even the folders have RSS feeds | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Even the folders have RSS feeds" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Let’s all upgrade to version 4.5.0 of the NewsBlur Android app | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Let’s all upgrade to version 4.5.0 of the NewsBlur Android app" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Join the NewsBlur iOS beta | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Join the NewsBlur iOS beta" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Premium fonts, comment-less shares, in-app Safari, and way, way more in version 5.0 of the NewsBlur iOS app | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Premium fonts, comment-less shares, in-app Safari, and way, way more in version 5.0 of the NewsBlur iOS app" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Better embeds for Twitter, Instagram, and Imgur | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Better embeds for Twitter, Instagram, and Imgur" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Power users need powerful statistics | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Power users need powerful statistics" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Search for pizza with your Android device | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Search for pizza with your Android device" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Two new third-party NewsBlur apps for iOS and Windows | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Two new third-party NewsBlur apps for iOS and Windows" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Story thumbnails for story titles | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Story thumbnails for story titles" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Tracking story changes with NewsBlur | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Tracking story changes with NewsBlur" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>A heavier lifting Android app | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="A heavier lifting Android app" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>NewsBlur goes dark … on iOS | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="NewsBlur goes dark … on iOS" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Twitter’s back, baby | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Twitter’s back, baby" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Newsletters in your NewsBlur | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Newsletters in your NewsBlur" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Newsreel is a NewsBlur app for tv | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Newsreel is a NewsBlur app for tv" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>The dashboard river will keep you up-to-date in real-time | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="The dashboard river will keep you up-to-date in real-time" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>A new NewsBlur Android release for the new year | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="A new NewsBlur Android release for the new year" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Preview NewsBlur’s upcoming hardware device, Turn Touch | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Preview NewsBlur’s upcoming hardware device, Turn Touch" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Introducing Turn Touch, a beautiful wooden remote for lights, devices, apps, and NewsBlur | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Introducing Turn Touch, a beautiful wooden remote for lights, devices, apps, and NewsBlur" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Last day to back Turn Touch: NewsBlur’s beautiful remote | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Last day to back Turn Touch: NewsBlur’s beautiful remote" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>Saved searches make it easy to create custom feeds | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="Saved searches make it easy to create custom feeds" />
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="https://newsblur.com/media/img/favicon.ico" type="image/png" />
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_32.png" sizes="32x32"/>
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<link rel="icon" href="https://newsblur.com/media/img/favicon_64.png" sizes="64x64"/>
|
||||
<link rel="alternate" type="application/rss+xml"
|
||||
title="The NewsBlur Blog RSS feed"
|
||||
href="/feed.xml" /><!-- Begin Jekyll SEO tag v2.7.1 -->
|
||||
<title>NewsBlur’s Twitter support just got a whole lot better | The NewsBlur Blog</title>
|
||||
<meta name="generator" content="Jekyll v4.2.0" />
|
||||
<meta property="og:title" content="NewsBlur’s Twitter support just got a whole lot better" />
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue