Giter Club home page Giter Club logo

slidehub's People

Contributors

dependabot-preview[bot] avatar dependabot-support avatar dependabot[bot] avatar ryuzee avatar satoryu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

slidehub's Issues

Recommended slides

  • Show several recommended slides at the top page

The easiest way to implement is...

  • create recommendations table that has id and created fields.
  • insert slide_id into recommendations table when you want to set the slide as recommended one.
  • use created date to sort and retrieve specified number of recommendations.

slideをアップロードすると、エラーが出る

エラーログを添付します

# Logfile created on 2018-06-21 14:18:09 +0900 by logger.rb/61378 
F, [2018-06-21T17:52:56.560283 #308] FATAL -- : 
F, [2018-06-21T17:52:56.560354 #308] FATAL -- : ActionView::Template::Error (missing region; use :region option or export region name to ENV['AWS_REGION']): 
F, [2018-06-21T17:52:56.560456 #308] FATAL -- : 27:

環境変数に
AWS_REGION=ap-northeast-1
を指定すると動作します

OSS_REGIONを参照していないような気がするのですが、こちらは仕様でしょうか?
ご確認よろしくお願いいたします

Customize header

  • Enables to change header color (inverse / default)
  • Enables to add custom links

Change column name "key"

While "key" is not reserved by MySQL, that word is reserved by MS SQLServer.

SQL Server reserved words

@@IDENTITY
ENCRYPTION
ORDER
ADD
END
OUTER
ALL
ERRLVL
OVER
ALTER
ESCAPE
PERCENT
AND
EXCEPT
PLAN
ANY
EXEC
PRECISION
AS
EXECUTE
PRIMARY
ASC
EXISTS
PRINT
AUTHORIZATION
EXIT
PROC
AVG
EXPRESSION
PROCEDURE
BACKUP
FETCH
PUBLIC
BEGIN
FILE
RAISERROR
BETWEEN
FILLFACTOR
READ
BREAK
FOR
READTEXT
BROWSE
FOREIGN
RECONFIGURE
BULK
FREETEXT
REFERENCES
BY
FREETEXTTABLE
REPLICATION
CASCADE
FROM
RESTORE
CASE
FULL
RESTRICT
CHECK
FUNCTION
RETURN
CHECKPOINT
GOTO
REVOKE
CLOSE
GRANT
RIGHT
CLUSTERED
GROUP
ROLLBACK
COALESCE
HAVING
ROWCOUNT
COLLATE
HOLDLOCK
ROWGUIDCOL
COLUMN
IDENTITY
RULE
COMMIT
IDENTITY_INSERT
SAVE
COMPUTE
IDENTITYCOL
SCHEMA
CONSTRAINT
IF
SELECT
CONTAINS
IN
SESSION_USER
CONTAINSTABLE
INDEX
SET
CONTINUE
INNER
SETUSER
CONVERT
INSERT
SHUTDOWN
COUNT
INTERSECT
SOME
CREATE
INTO
STATISTICS
CROSS
IS
SUM
CURRENT
JOIN
SYSTEM_USER
CURRENT_DATE
KEY
TABLE
CURRENT_TIME
KILL
TEXTSIZE
CURRENT_TIMESTAMP
LEFT
THEN
CURRENT_USER
LIKE
TO
CURSOR
LINENO
TOP
DATABASE
LOAD
TRAN
DATABASEPASSWORD
MAX
TRANSACTION
DATEADD
MIN
TRIGGER
DATEDIFF
NATIONAL
TRUNCATE
DATENAME
NOCHECK
TSEQUAL
DATEPART
NONCLUSTERED
UNION
DBCC
NOT
UNIQUE
DEALLOCATE
NULL
UPDATE
DECLARE
NULLIF
UPDATETEXT
DEFAULT
OF
USE
DELETE
OFF
USER
DENY
OFFSETS
VALUES
DESC
ON
VARYING
DISK
OPEN
VIEW
DISTINCT
OPENDATASOURCE
WAITFOR
DISTRIBUTED
OPENQUERY
WHEN
DOUBLE
OPENROWSET
WHERE
DROP
OPENXML
WHILE
DUMP
OPTION
WITH
ELSE
OR
WRITETEXT

migrateに失敗する

@ryuzee
1.6にバージョンアップした所、migrate中のseed処理でabortします

[root@ip-xx-xx-xx-xx ~]# docker exec $CONTAINER_ID bash -l -c 'bundle exec rake db:seed RAILS_ENV=production'
stdin: is not a tty
rake aborted!
ActiveModel::UnknownAttributeError: unknown attribute 'name' for Category.
/opt/application/current/vendor/bundle/ruby/2.5.0/gems/activemodel-5.1.6/lib/active_model/attribute_assignment.rb:48:in `_assign_attribute'
/opt/application/current/vendor/bundle/ruby/2.5.0/gems/activemodel-5.1.6/lib/active_model/attribute_assignment.rb:40:in `block in _assign_attributes'
/opt/application/current/vendor/bundle/ruby/2.5.0/gems/activemodel-5.1.6/lib/active_model/attribute_assignment.rb:39:in `each'
/opt/application/current/vendor/bundle/ruby/2.5.0/gems/activemodel-5.1.6/lib/active_model/attribute_assignment.rb:39:in `_assign_attributes'
/opt/application/current/vendor/bundle/ruby/2.5.0/gems/activerecord-5.1.6/lib/active_record/attribute_assignment.rb:26:in `_assign_attributes'
/opt/application/current/vendor/bundle/ruby/2.5.0/gems/activemodel-5.1.6/lib/active_model/attribute_assignment.rb:33:in `assign_attributes'
/opt/application/current/vendor/bundle/ruby/2.5.0/gems/activerecord-5.1.6/lib/active_record/core.rb:337:in `initialize'
/opt/application/current/vendor/bundle/ruby/2.5.0/gems/activerecord-5.1.6/lib/active_record/inheritance.rb:66:in `new'
/opt/application/current/vendor/bundle/ruby/2.5.0/gems/activerecord-5.1.6/lib/active_record/inheritance.rb:66:in `new'
/opt/application/current/vendor/bundle/ruby/2.5.0/gems/activerecord-5.1.6/lib/active_record/persistence.rb:33:in `create'
/opt/application/current/vendor/bundle/ruby/2.5.0/gems/activerecord-5.1.6/lib/active_record/persistence.rb:31:in `block in create'
/opt/application/current/vendor/bundle/ruby/2.5.0/gems/activerecord-5.1.6/lib/active_record/persistence.rb:31:in `collect'
/opt/application/current/vendor/bundle/ruby/2.5.0/gems/activerecord-5.1.6/lib/active_record/persistence.rb:31:in `create'
/opt/application/current/db/seeds.rb:9:in `<top (required)>'
/opt/application/current/vendor/bundle/ruby/2.5.0/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:286:in `load'
/opt/application/current/vendor/bundle/ruby/2.5.0/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:286:in `block in load'
/opt/application/current/vendor/bundle/ruby/2.5.0/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:258:in `load_dependency'
/opt/application/current/vendor/bundle/ruby/2.5.0/gems/activesupport-5.1.6/lib/active_support/dependencies.rb:286:in `load'
/opt/application/current/vendor/bundle/ruby/2.5.0/gems/railties-5.1.6/lib/rails/engine.rb:549:in `load_seed'
/opt/application/current/vendor/bundle/ruby/2.5.0/gems/activerecord-5.1.6/lib/active_record/tasks/database_tasks.rb:270:in `load_seed'
/opt/application/current/vendor/bundle/ruby/2.5.0/gems/activerecord-5.1.6/lib/active_record/railties/databases.rake:184:in `block (2 levels) in <top (required)>'
/opt/application/current/vendor/bundle/ruby/2.5.0/gems/rake-12.3.1/exe/rake:27:in `<top (required)>'
/root/.rbenv/versions/2.5.0/bin/bundle:23:in `load'
/root/.rbenv/versions/2.5.0/bin/bundle:23:in `<main>'
Tasks: TOP => db:seed
(See full trace by running task with --trace)

ご確認よろしくお願いいたします

Does not work on Azure.

Hello, thank you for creating this great project.

I am new to Azure and can't figure out the problem. the running app returns nothing or service unavailable.

I am trying on AWS now, this is more of a notice for you that the script is failing.

workerプロセスがtimeoutを繰り返す

起動後、unidcorn.logをみるとworkerプロセスが再起動しているようにみえます
コンテナ内のunicorn.logを添付いたします

og/unicorn.log 9d:/opt/application/current# head -100 /opt/application/current/l 
I, [2018-06-01T19:13:12.836810 #12]  INFO -- : Refreshing Gem list
I, [2018-06-01T19:13:19.147042 #12]  INFO -- : listening on addr=0.0.0.0:3000 fd=12
I, [2018-06-01T19:13:19.147169 #12]  INFO -- : listening on addr=/tmp/unicorn.sock fd=13
I, [2018-06-01T19:13:19.179130 #303]  INFO -- : worker=0 ready
I, [2018-06-01T19:13:19.181570 #306]  INFO -- : worker=1 ready
I, [2018-06-01T19:13:19.183013 #12]  INFO -- : master process ready
I, [2018-06-01T19:13:19.183946 #309]  INFO -- : worker=2 ready
E, [2018-06-01T19:13:51.215829 #12] ERROR -- : worker=0 PID:303 timeout (16s > 15s), killing
E, [2018-06-01T19:13:51.216002 #12] ERROR -- : worker=1 PID:306 timeout (16s > 15s), killing
E, [2018-06-01T19:13:51.221927 #12] ERROR -- : reaped #<Process::Status: pid 303 SIGKILL (signal 9)> worker=0
E, [2018-06-01T19:13:51.221988 #12] ERROR -- : reaped #<Process::Status: pid 306 SIGKILL (signal 9)> worker=1
I, [2018-06-01T19:13:51.225904 #315]  INFO -- : worker=0 ready
I, [2018-06-01T19:13:51.227461 #318]  INFO -- : worker=1 ready
E, [2018-06-01T19:14:08.243526 #12] ERROR -- : worker=0 PID:315 timeout (16s > 15s), killing
E, [2018-06-01T19:14:08.243671 #12] ERROR -- : worker=1 PID:318 timeout (16s > 15s), killing
E, [2018-06-01T19:14:08.246665 #12] ERROR -- : reaped #<Process::Status: pid 315 SIGKILL (signal 9)> worker=0
E, [2018-06-01T19:14:08.246701 #12] ERROR -- : reaped #<Process::Status: pid 318 SIGKILL (signal 9)> worker=1
I, [2018-06-01T19:14:08.249660 #321]  INFO -- : worker=0 ready
I, [2018-06-01T19:14:08.250819 #324]  INFO -- : worker=1 ready
E, [2018-06-01T19:14:25.267402 #12] ERROR -- : worker=2 PID:309 timeout (16s > 15s), killing
E, [2018-06-01T19:14:25.267589 #12] ERROR -- : worker=0 PID:321 timeout (16s > 15s), killing
E, [2018-06-01T19:14:25.272780 #12] ERROR -- : reaped #<Process::Status: pid 309 SIGKILL (signal 9)> worker=2
E, [2018-06-01T19:14:25.272839 #12] ERROR -- : reaped #<Process::Status: pid 321 SIGKILL (signal 9)> worker=0
I, [2018-06-01T19:14:25.276692 #327]  INFO -- : worker=0 ready
I, [2018-06-01T19:14:25.278238 #330]  INFO -- : worker=2 ready
E, [2018-06-01T19:14:42.294151 #12] ERROR -- : worker=0 PID:327 timeout (16s > 15s), killing
E, [2018-06-01T19:14:42.294349 #12] ERROR -- : worker=2 PID:330 timeout (16s > 15s), killing
E, [2018-06-01T19:14:42.297506 #12] ERROR -- : reaped #<Process::Status: pid 327 SIGKILL (signal 9)> worker=0
E, [2018-06-01T19:14:42.297557 #12] ERROR -- : reaped #<Process::Status: pid 330 SIGKILL (signal 9)> worker=2
I, [2018-06-01T19:14:42.300574 #475]  INFO -- : worker=0 ready
I, [2018-06-01T19:14:42.303205 #478]  INFO -- : worker=2 ready
E, [2018-06-01T19:14:59.319564 #12] ERROR -- : worker=0 PID:475 timeout (16s > 15s), killing
E, [2018-06-01T19:14:59.319839 #12] ERROR -- : worker=2 PID:478 timeout (16s > 15s), killing
E, [2018-06-01T19:14:59.324240 #12] ERROR -- : reaped #<Process::Status: pid 475 SIGKILL (signal 9)> worker=0
E, [2018-06-01T19:14:59.324296 #12] ERROR -- : reaped #<Process::Status: pid 478 SIGKILL (signal 9)> worker=2
I, [2018-06-01T19:14:59.328307 #481]  INFO -- : worker=0 ready
I, [2018-06-01T19:14:59.329901 #484]  INFO -- : worker=2 ready
E, [2018-06-01T19:15:16.346083 #12] ERROR -- : worker=1 PID:324 timeout (16s > 15s), killing
E, [2018-06-01T19:15:16.346257 #12] ERROR -- : worker=0 PID:481 timeout (16s > 15s), killing
E, [2018-06-01T19:15:16.350647 #12] ERROR -- : reaped #<Process::Status: pid 324 SIGKILL (signal 9)> worker=1
E, [2018-06-01T19:15:16.350710 #12] ERROR -- : reaped #<Process::Status: pid 481 SIGKILL (signal 9)> worker=0
I, [2018-06-01T19:15:16.354427 #487]  INFO -- : worker=0 ready
I, [2018-06-01T19:15:16.356192 #490]  INFO -- : worker=1 ready
E, [2018-06-01T19:15:33.372268 #12] ERROR -- : worker=0 PID:487 timeout (16s > 15s), killing
E, [2018-06-01T19:15:33.372473 #12] ERROR -- : worker=1 PID:490 timeout (16s > 15s), killing
E, [2018-06-01T19:15:33.376468 #12] ERROR -- : reaped #<Process::Status: pid 487 SIGKILL (signal 9)> worker=0
E, [2018-06-01T19:15:33.376524 #12] ERROR -- : reaped #<Process::Status: pid 490 SIGKILL (signal 9)> worker=1
I, [2018-06-01T19:15:33.380271 #493]  INFO -- : worker=0 ready
I, [2018-06-01T19:15:33.381738 #496]  INFO -- : worker=1 ready
E, [2018-06-01T19:15:50.397925 #12] ERROR -- : worker=2 PID:484 timeout (16s > 15s), killing
E, [2018-06-01T19:15:50.398094 #12] ERROR -- : worker=1 PID:496 timeout (16s > 15s), killing
E, [2018-06-01T19:15:50.402172 #12] ERROR -- : reaped #<Process::Status: pid 484 SIGKILL (signal 9)> worker=2
E, [2018-06-01T19:15:50.402255 #12] ERROR -- : reaped #<Process::Status: pid 496 SIGKILL (signal 9)> worker=1
I, [2018-06-01T19:15:50.406320 #647]  INFO -- : worker=1 ready
I, [2018-06-01T19:15:50.408102 #650]  INFO -- : worker=2 ready
E, [2018-06-01T19:16:07.424199 #12] ERROR -- : worker=0 PID:493 timeout (16s > 15s), killing
E, [2018-06-01T19:16:07.424372 #12] ERROR -- : worker=1 PID:647 timeout (16s > 15s), killing
E, [2018-06-01T19:16:07.428443 #12] ERROR -- : reaped #<Process::Status: pid 493 SIGKILL (signal 9)> worker=0
E, [2018-06-01T19:16:07.428518 #12] ERROR -- : reaped #<Process::Status: pid 647 SIGKILL (signal 9)> worker=1
I, [2018-06-01T19:16:07.432261 #653]  INFO -- : worker=0 ready
I, [2018-06-01T19:16:07.434581 #656]  INFO -- : worker=1 ready
E, [2018-06-01T19:16:24.450779 #12] ERROR -- : worker=2 PID:650 timeout (16s > 15s), killing
E, [2018-06-01T19:16:24.451017 #12] ERROR -- : worker=0 PID:653 timeout (16s > 15s), killing
E, [2018-06-01T19:16:24.455080 #12] ERROR -- : reaped #<Process::Status: pid 650 SIGKILL (signal 9)> worker=2
E, [2018-06-01T19:16:24.455162 #12] ERROR -- : reaped #<Process::Status: pid 653 SIGKILL (signal 9)> worker=0
I, [2018-06-01T19:16:24.458946 #659]  INFO -- : worker=0 ready
I, [2018-06-01T19:16:24.460566 #662]  INFO -- : worker=2 ready
E, [2018-06-01T19:16:41.476631 #12] ERROR -- : worker=0 PID:659 timeout (16s > 15s), killing
E, [2018-06-01T19:16:41.476754 #12] ERROR -- : worker=2 PID:662 timeout (16s > 15s), killing
E, [2018-06-01T19:16:41.480756 #12] ERROR -- : reaped #<Process::Status: pid 659 SIGKILL (signal 9)> worker=0
E, [2018-06-01T19:16:41.480809 #12] ERROR -- : reaped #<Process::Status: pid 662 SIGKILL (signal 9)> worker=2
I, [2018-06-01T19:16:41.483764 #665]  INFO -- : worker=0 ready
I, [2018-06-01T19:16:41.485017 #668]  INFO -- : worker=2 ready
E, [2018-06-01T19:16:58.501496 #12] ERROR -- : worker=0 PID:665 timeout (16s > 15s), killing
E, [2018-06-01T19:16:58.501645 #12] ERROR -- : worker=2 PID:668 timeout (16s > 15s), killing
E, [2018-06-01T19:16:58.505472 #12] ERROR -- : reaped #<Process::Status: pid 665 SIGKILL (signal 9)> worker=0
E, [2018-06-01T19:16:58.505535 #12] ERROR -- : reaped #<Process::Status: pid 668 SIGKILL (signal 9)> worker=2
I, [2018-06-01T19:16:58.509228 #813]  INFO -- : worker=0 ready
I, [2018-06-01T19:16:58.510834 #816]  INFO -- : worker=2 ready
E, [2018-06-01T19:17:15.526983 #12] ERROR -- : worker=0 PID:813 timeout (16s > 15s), killing
E, [2018-06-01T19:17:15.527115 #12] ERROR -- : worker=2 PID:816 timeout (16s > 15s), killing
E, [2018-06-01T19:17:15.530674 #12] ERROR -- : reaped #<Process::Status: pid 813 SIGKILL (signal 9)> worker=0
E, [2018-06-01T19:17:15.530721 #12] ERROR -- : reaped #<Process::Status: pid 816 SIGKILL (signal 9)> worker=2
I, [2018-06-01T19:17:15.533784 #819]  INFO -- : worker=0 ready
I, [2018-06-01T19:17:15.535162 #822]  INFO -- : worker=2 ready
E, [2018-06-01T19:17:32.543276 #12] ERROR -- : worker=1 PID:656 timeout (16s > 15s), killing
E, [2018-06-01T19:17:32.543615 #12] ERROR -- : worker=0 PID:819 timeout (16s > 15s), killing
E, [2018-06-01T19:17:32.547435 #12] ERROR -- : reaped #<Process::Status: pid 656 SIGKILL (signal 9)> worker=1
E, [2018-06-01T19:17:32.547498 #12] ERROR -- : reaped #<Process::Status: pid 819 SIGKILL (signal 9)> worker=0
I, [2018-06-01T19:17:32.551189 #825]  INFO -- : worker=0 ready
I, [2018-06-01T19:17:32.552850 #828]  INFO -- : worker=1 ready
E, [2018-06-01T19:17:49.568908 #12] ERROR -- : worker=2 PID:822 timeout (16s > 15s), killing
E, [2018-06-01T19:17:49.569154 #12] ERROR -- : worker=1 PID:828 timeout (16s > 15s), killing
E, [2018-06-01T19:17:49.573478 #12] ERROR -- : reaped #<Process::Status: pid 822 SIGKILL (signal 9)> worker=2
E, [2018-06-01T19:17:49.573553 #12] ERROR -- : reaped #<Process::Status: pid 828 SIGKILL (signal 9)> worker=1
I, [2018-06-01T19:17:49.577398 #831]  INFO -- : worker=1 ready
I, [2018-06-01T19:17:49.578884 #834]  INFO -- : worker=2 ready
E, [2018-06-01T19:18:06.595040 #12] ERROR -- : worker=0 PID:825 timeout (16s > 15s), killing
E, [2018-06-01T19:18:06.595227 #12] ERROR -- : worker=2 PID:834 timeout (16s > 15s), killing
E, [2018-06-01T19:18:06.599236 #12] ERROR -- : reaped #<Process::Status: pid 825 SIGKILL (signal 9)> worker=0

1 error prohibited this slide from being saved. Key can't be blank

Hi Ryuzee.

Now, i having this issue under the slide/new section at the time i try to upload the file.

1 error prohibited this slide from being saved:
Key can't be blank

I have check the form, after i filled all the form fields, Create Slide button shows disable. However, i force the button to be enable and that's the error that shows after i click it.
Input field is not generating the key. It is being generated like this:
name="slide[key]"

No key, so, hope i receive your opinion about this issue and what i have to do to solve it.
Thank you very much.

Rails5

  • This application is running with Rails4

Thumbnail generate error

Two issue occurred when uploading slide in PDF

I, [2018-07-09T21:47:09.364023 #1029]  INFO -- : ["/tmp/d20180709-1029-1v9nobj/2c4023fd76125cb1d459e20f25f6398f.pdf", "/tmp/d20180709-1029-1v9nobj/slide-01.jpg", "/tmp/d20180709-1029-1v9nobj/slide-01.ppm", "/tmp/d20180709-1029-1v9nobj/slide-02.jpg", "/tmp/d20180709-1029-1v9nobj/slide-02.ppm", "/tmp/d20180709-1029-1v9nobj/slide-03.jpg", "/tmp/d20180709-1029-1v9nobj/slide-03.ppm", "/tmp/d20180709-1029-1v9nobj/slide-04.jpg", "/tmp/d20180709-1029-1v9nobj/slide-04.ppm", "/tmp/d20180709-1029-1v9nobj/slide-05.jpg", "/tmp/d20180709-1029-1v9nobj/slide-05.ppm", "/tmp/d20180709-1029-1v9nobj/slide-06.jpg", "/tmp/d20180709-1029-1v9nobj/slide-06.ppm", "/tmp/d20180709-1029-1v9nobj/slide-07.jpg", "/tmp/d20180709-1029-1v9nobj/slide-07.ppm", "/tmp/d20180709-1029-1v9nobj/slide-08.jpg", "/tmp/d20180709-1029-1v9nobj/slide-08.ppm", "/tmp/d20180709-1029-1v9nobj/slide-09.jpg", "/tmp/d20180709-1029-1v9nobj/slide-09.ppm", "/tmp/d20180709-1029-1v9nobj/slide-10.jpg", "/tmp/d20180709-1029-1v9nobj/slide-10.ppm", "/tmp/d20180709-1029-1v9nobj/slide-11.jpg", "/tmp/d20180709-1029-1v9nobj/slide-11.ppm", "/tmp/d20180709-1029-1v9nobj/slide-12.jpg", "/tmp/d20180709-1029-1v9nobj/slide-12.ppm", "/tmp/d20180709-1029-1v9nobj/slide-13.jpg", "/tmp/d20180709-1029-1v9nobj/slide-13.ppm", "/tmp/d20180709-1029-1v9nobj/slide-14.jpg", "/tmp/d20180709-1029-1v9nobj/slide-14.ppm", "/tmp/d20180709-1029-1v9nobj/slide-15.jpg", "/tmp/d20180709-1029-1v9nobj/slide-15.ppm", "/tmp/d20180709-1029-1v9nobj/slide-16.jpg", "/tmp/d20180709-1029-1v9nobj/slide-16.ppm", "/tmp/d20180709-1029-1v9nobj/slide-17.jpg", "/tmp/d20180709-1029-1v9nobj/slide-17.ppm"]
I, [2018-07-09T21:47:09.368901 #1029]  INFO -- : Generating thumbnails
I, [2018-07-09T21:47:09.368992 #1029]  INFO -- : ["/tmp/d20180709-1029-1v9nobj/slide-01.jpg", "/tmp/d20180709-1029-1v9nobj/slide-02.jpg", "/tmp/d20180709-1029-1v9nobj/slide-03.jpg", "/tmp/d20180709-1029-1v9nobj/slide-04.jpg", "/tmp/d20180709-1029-1v9nobj/slide-05.jpg", "/tmp/d20180709-1029-1v9nobj/slide-06.jpg", "/tmp/d20180709-1029-1v9nobj/slide-07.jpg", "/tmp/d20180709-1029-1v9nobj/slide-08.jpg", "/tmp/d20180709-1029-1v9nobj/slide-09.jpg", "/tmp/d20180709-1029-1v9nobj/slide-10.jpg", "/tmp/d20180709-1029-1v9nobj/slide-11.jpg", "/tmp/d20180709-1029-1v9nobj/slide-12.jpg", "/tmp/d20180709-1029-1v9nobj/slide-13.jpg", "/tmp/d20180709-1029-1v9nobj/slide-14.jpg", "/tmp/d20180709-1029-1v9nobj/slide-15.jpg", "/tmp/d20180709-1029-1v9nobj/slide-16.jpg", "/tmp/d20180709-1029-1v9nobj/slide-17.jpg"]
/opt/application/current/lib/slide_hub/convert_util.rb:57:in `read': No such file or directory @ rb_sysopen - /tmp/d20180709-1029-1v9nobj/1.txt (Errno::ENOENT)
	from /opt/application/current/lib/slide_hub/convert_util.rb:57:in `block in pdf_to_transcript'
	from /opt/application/current/lib/slide_hub/convert_util.rb:52:in `times'
	from /opt/application/current/lib/slide_hub/convert_util.rb:52:in `pdf_to_transcript'
	from /opt/application/current/lib/slide_hub/convert_procedure.rb:86:in `convert_to_transcript'
	from /opt/application/current/lib/slide_hub/convert_procedure.rb:27:in `block in run'
	from /root/.rbenv/versions/2.5.0/lib/ruby/2.5.0/tmpdir.rb:89:in `mktmpdir'
	from /opt/application/current/lib/slide_hub/convert_procedure.rb:19:in `run'
	from /opt/application/current/lib/slide_hub/batch.rb:19:in `block in execute'
	from /opt/application/current/lib/slide_hub/batch.rb:16:in `each'
	from /opt/application/current/lib/slide_hub/batch.rb:16:in `execute'
	from /opt/application/current/vendor/bundle/ruby/2.5.0/gems/railties-5.2.0/lib/rails/commands/runner/runner_command.rb:41:in `<main>'
	from /opt/application/current/vendor/bundle/ruby/2.5.0/gems/railties-5.2.0/lib/rails/commands/runner/runner_command.rb:41:in `eval'
	from /opt/application/current/vendor/bundle/ruby/2.5.0/gems/railties-5.2.0/lib/rails/commands/runner/runner_command.rb:41:in `perform'
	from /opt/application/current/vendor/bundle/ruby/2.5.0/gems/thor-0.20.0/lib/thor/command.rb:27:in `run'
	from /opt/application/current/vendor/bundle/ruby/2.5.0/gems/thor-0.20.0/lib/thor/invocation.rb:126:in `invoke_command'
	from /opt/application/current/vendor/bundle/ruby/2.5.0/gems/thor-0.20.0/lib/thor.rb:387:in `dispatch'
	from /opt/application/current/vendor/bundle/ruby/2.5.0/gems/railties-5.2.0/lib/rails/command/base.rb:65:in `perform'
	from /opt/application/current/vendor/bundle/ruby/2.5.0/gems/railties-5.2.0/lib/rails/command.rb:46:in `invoke'
	from /opt/application/current/vendor/bundle/ruby/2.5.0/gems/railties-5.2.0/lib/rails/commands.rb:18:in `<top (required)>'
	from bin/rails:4:in `require'
	from bin/rails:4:in `<main>'

Also see warning with

stdin: is not a tty

tried to fix but cannot help.

Basic Info:
Version: V1.6.2
Cloud: AWS S3
DB : MySQL
SQS: AWS SQS

Slow Test

Need to faster these tests...

Top 10 slowest examples (7.81 seconds, 9.7% of total time):
Slides GET /slides/1 works!
3.38 seconds ./spec/requests/slides_spec.rb:35
Admin::CustomContentsController CustomContents GET /admin/custom_contents/ works!
0.97425 seconds ./spec/controllers/admin/admin_custom_contents_controller_spec.rb:11
SlidesController DELETE #destroy succeeds to update the record with running conversion
0.57104 seconds ./spec/controllers/slides_controller_spec.rb:197
LatestSlides GET /index works!
0.53542 seconds ./spec/requests/latest_slides_spec.rb:5
CommentsController Comments delete comment by login user works!
0.42239 seconds ./spec/controllers/comments_controller_spec.rb:51
HtmlPlayerController GET #show succeeds to return html for iFrame
0.39273 seconds ./spec/controllers/html_player_controller_spec.rb:7
SlidesController GET #show assigns @comment if user logged in
0.38919 seconds ./spec/controllers/slides_controller_spec.rb:66
CategoriesController GET #category render category
0.38778 seconds ./spec/controllers/categories_controller_spec.rb:5
Admin::SlidesController Slides GET /admin/slides/download/1 works!
0.38109 seconds ./spec/controllers/admin/admin_slides_controller_spec.rb:26
Admin::FeaturedSlidesController FeaturedSlides POST /admin/featured_slides when the target slide exists saves record as a featured slides
0.37556 seconds ./spec/controllers/admin/admin_featured_slides_controller_spec.rb:27

OAuth login

It's nice to have a functionality to login to the system with Twitter / Facebook / GitHub account.

migrating to circleci 2.0

circleci v1.0 will be closed by August. Thus we need to migrate circleci settings to that for 2.0

unicorn.sock failed : (No such file or directory) issue.

Hi ryuzee.
I'm trying to install your app on a AWS ubuntu 14.04 server.
I have followed all your instructions, however, i'm presenting an unicorn.sock error.
Here is the log message taken from slidehub_error.log:

2016/09/07 12:23:51 [crit] 1108#0: *12 connect() to unix:/tmp/unicorn.sock failed (2: No such file or directory) while connecting to upstream, client: 190.7$

Unicorn.sock file is not on the /tmp folder, i did like your opinion on this, so you can point me into the right track.

Please, let me know if you need anything else from me.
Thank you in advance and hope to hear from you soon.

Upload view Error

Hi Ryuzee.

I have another issue and i need your help.
Your updates on how to install your app works like a charm.

Now, i have this issue, when i login and head up to the upload option, on the menu dropdown, it just says:
"We're sorry, but something went wrong.
If you are the application owner check the logs for more information."
Link: (filtered)
I try to check the log files, however, it just says error 500. Probably i'm seeing the wrong log?
(slidehub_error.log don't show anything, as equal error.log).
If you can give me a workaround to deal with this, i will truly appreciate it.

Hope to hear from you soon.

Suggestion / request: use Dependabot to keep gems up-to-date

First of all, thanks for SlideHub!

I've got a suggestion / request: would you be up for using Dependabot to automatically create dependency update PRs? I ran it against my fork and it generated these PRs. I'll port the aws-sdk-s3 one across to this repo now.

I built Dependabot, but I'm honestly only suggesting it because I hope it can save you some time. I'd love any feedback, and obviously having open source repos using Dependabot helps boost its profile, but if it's not helpful to you then it's not really worth anything.

You can install it from here or here if you decide to give it a try. It's been through GitHub's security testing (to be allowed in the GitHub Marketplace) and is used by a few thousand organisations, and the source code is here.

:octocat:

AWS ECSで起動させると、プロセスの再起動を繰り返す

AWS EFS上でslidehubの最新コンテナ(2018/05/31現在)を起動させると、プロセスの再起動を繰り返す挙動をします

コンテナからcloudwatch logに流した結果を添付いたします

2018-05-31 12:04:54,610 CRIT Supervisor running as root (no user in config file)
2018-05-31 12:04:54,615 INFO supervisord started with pid 1
2018-05-31 12:04:55,618 INFO spawned: 'unoconv' with pid 7
2018-05-31 12:04:55,620 INFO spawned: 'convert_job' with pid 8
2018-05-31 12:04:55,621 INFO spawned: 'xvfb' with pid 9
2018-05-31 12:04:55,623 INFO spawned: 'unicorn' with pid 10
2018-05-31 12:04:57,092 INFO success: unoconv entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2018-05-31 12:04:57,092 INFO success: convert_job entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2018-05-31 12:04:57,092 INFO success: xvfb entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2018-05-31 12:04:57,092 INFO success: unicorn entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2018-05-31 12:05:00,177 INFO exited: unoconv (exit status 0; expected)
2018-05-31 12:05:01,180 INFO spawned: 'unoconv' with pid 268
2018-05-31 12:05:02,182 INFO success: unoconv entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2018-05-31 12:05:07,732 INFO exited: unicorn (exit status 1; not expected)
2018-05-31 12:05:08,734 INFO spawned: 'unicorn' with pid 290
2018-05-31 12:05:10,127 INFO success: unicorn entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2018-05-31 12:05:12,157 INFO exited: unicorn (exit status 1; not expected)
2018-05-31 12:05:13,159 INFO spawned: 'unicorn' with pid 378
2018-05-31 12:05:14,636 INFO success: unicorn entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2018-05-31 12:05:16,533 INFO exited: unicorn (exit status 1; not expected)
2018-05-31 12:05:17,536 INFO spawned: 'unicorn' with pid 466
2018-05-31 12:05:18,937 INFO success: unicorn entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2018-05-31 12:05:20,881 INFO exited: unicorn (exit status 1; not expected)
2018-05-31 12:05:21,884 INFO spawned: 'unicorn' with pid 554
2018-05-31 12:05:23,323 INFO success: unicorn entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2018-05-31 12:05:25,227 INFO exited: unicorn (exit status 1; not expected)
2018-05-31 12:05:26,229 INFO spawned: 'unicorn' with pid 642
2018-05-31 12:05:27,634 INFO success: unicorn entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2018-05-31 12:05:29,525 INFO exited: unicorn (exit status 1; not expected)
2018-05-31 12:05:30,527 INFO spawned: 'unicorn' with pid 730
2018-05-31 12:05:31,928 INFO success: unicorn entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2018-05-31 12:05:33,946 INFO exited: unicorn (exit status 1; not expected)

以下環境を説明します

カスタムコンテンツ設定について

管理者メニュー内のカスタムコンテンツ設定の使用方法を教えていただけますでしょうか

  1. 「画面上部」「**下部」はhtmlソースがそのままでるっぽい
  2. 「右上部」は何が変化したのか不明
  3. 「ヘッダー追加メニュー」の書式が不明
  4. 「ページ一覧」で追加したページは「/pages/」+「パス」でアクセス出来る

という所まで判りました
ご教授の程よろしくおねがいします

Yarn executable was not detected in the system.

I get this error when I run docker-compose build.

Step 12/15 : RUN bash -l -c 'OSS_SECRET_KEY_BASE=dummy RAILS_ENV=production bundle exec rake assets:precompile'
---> Running in 393015a1d594
stdin: is not a tty
Yarn executable was not detected in the system.
Download Yarn at https://yarnpkg.com/en/docs/install
rake aborted!

I have tried install yarn by
https://yarnpkg.com/lang/en/docs/install/#debian-stable
and npm install yarn -g

Do you have any idea?

embeded view not showing up

Hello, thanks for creating slide-hub
I deployed it on AWS and everything seems to work OK, except for the embedded view.
It only shows a broken file icon on the top left.(I am able to download the file I uploaded)
do you have any idea?
Thank you for your time.
EDIT: typo

complicated gem dependencies

  • latest paperclip requires "aws-sdk-s3" that is a part of aws-sdk v3
  • paperclip does not have a driver for azure officially
  • paper-clip azure is provided at https://github.com/supportify/paperclip-azure
  • the current version of paperclip-azure uses 'azure', '~> 0.7' and 'azure-storage', '~> 0.12'
  • On the other hand, azure-sdk did breaking change although they uses semantic versioning and the version does not mean it includes such changes...
  • in short, I have to fix the gem version as follows. azure: 0.7.6(latest = 0.7.10) , azure-core: 0.1.5(latest = 0.1.14) because paperclip-azure depends on these versions.
  • I'd like to remove azure-contrib that is used for generating sas url by updating "azure-sdk"

Thus, it can be a scenario.

  • remove paperclip and use active-storage in Rails 5.2
  • update azure-sdk, rewrite the function for generating sas url and finally remove azure-contrib
  • update aws-sdk from v2 to v3

refactor routing

At this point, routes.rb seems like dirty code and it must be refactored.

Twitter Card

See https://saruwakakun.com/html-css/reference/twitter-card

<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:site" content="@ryuzee" />
<meta property="og:url" content="https://slide.meguro.ryuzee.com" />
<meta property="og:title" content="Foo Bar" /> 
<meta property="og:description" content="Biz Buss" /> 
<meta property="og:image" content="https://example.com/example.png" />

Full Text Search

  • Users want to find slides that contain specific words.
  • At this point, transcripts are stored in S3/Azure Storage and only metadata is stored in the database.

Invalidate image cache on CDN

Azure CDN / AWS CloudFront caches images for a while although new slide has been uploaded and converted. To fix this issue, need to implement cache invalidating functionalities.

use friendly_id

it's not beautiful to expose numerical incremental id when accessing to users and slides

Mixed protocol

If the app is running with SSL, upload functionality does not work because of mixed protocol. It seems that Azure upload endpoint is provided on http

[AWS] upload failed because of lack of key

<Code>InvalidArgument</Code>
<Message>Bucket POST must contain a field named 'key'.  If it is specified, please check the order of the fields.</Message>
<ArgumentName>key</ArgumentName>

FATAL -- : ActionController::RoutingError (No route matches [GET] "/images/favicon.ico"):

Hi @ryuzee
Please see image attached.
message

I'm getting this message after I upload either a .pdf or a .pptx file.
On production.log file appears this message:

(Debug and Info messages) -------------------------------

I, [2016-09-26T03:41:16.186955 #1350] INFO -- : Started GET "/slides/index" for 66.249.93.211 at 2016-09-26 03:41:16 +0900
I, [2016-09-26T03:41:16.187843 #1350] INFO -- : Processing by SlidesController#index as HTML
D, [2016-09-26T03:41:16.189898 #1350] DEBUG -- :^[[1m^[[35mSlide Load (0.1ms)^[[0m SELECT slides.* FROM slides WHERE (convert_status = 100) ORDER BY total_view desc LIMIT 8
I, [2016-09-26T03:41:16.190051 #1350] INFO -- : Rendered slides/_thumbnail_template.html.erb (0.6ms)
D, [2016-09-26T03:41:16.190558 #1350] DEBUG -- :^[[1m^[[36mSlide Load (0.1ms)^[[0m ^[[1mSELECT slides.* FROM slides WHERE (convert_status = 100) ORDER BY created_at desc LIMIT 8^[[0m
I, [2016-09-26T03:41:16.190690 #1350] INFO -- : Rendered slides/_thumbnail_template.html.erb (0.3ms)
I, [2016-09-26T03:41:16.190755 #1350] INFO -- :Rendered slides/index.html.erb within layouts/application (1.6ms)
D, [2016-09-26T03:41:16.193360 #1350] DEBUG -- : ^[[1m^[[35mCategory Load(0.1ms)^[[0m SELECT categories.* FROM categories ORDER BY id asc
D, [2016-09-26T03:41:16.194598 #1350] DEBUG -- : ^[[1m^[[36mUser Load(0.1ms)^[[0m ^[[1mSELECT users.* FROM users WHERE users.id = 2 ORDER BY users.id ASC LIMIT 1^[[0m
I, [2016-09-26T03:41:16.196246 #1350] INFO -- : Completed 200 OK in 8ms (Views: 6.9ms | ActiveRecord: 0.4ms)
I, [2016-09-26T03:43:01.909340 #1353] INFO -- : Started GET "/" for190.75.118.58 at 2016-09-26 03:43:01 +0900
I, [2016-09-26T03:43:01.910069 #1353] INFO -- : Processing by SlidesController#index as HTML
D, [2016-09-26T03:43:01.911954 #1353] DEBUG -- : ^[[1m^[[35mSlide Load (0.1ms)^[[0m SELECT slides.* FROM slides WHERE (convert_status = 100) ORDER BY total_view desc LIMIT 8
I, [2016-09-26T03:43:01.912100 #1353] INFO -- : Rendered slides/_thumbnail_template.html.erb (0.7ms)
D, [2016-09-26T03:43:01.912714 #1353] DEBUG -- : ^[[1m^[[36mSlide Load (0.1ms)^[[0m ^[[1mSELECT slides.* FROM slides WHERE (convert_status = 100)ORDER BY created_at desc LIMIT 8^[[0m
I, [2016-09-26T03:43:01.912960 #1353] INFO -- : Rendered slides/_thumbnail_template.html.erb (0.4ms)
I, [2016-09-26T03:43:01.913052 #1353] INFO -- : Rendered slides/index.html.erb within layouts/application (1.9ms)
D, [2016-09-26T03:43:01.915641 #1353] DEBUG -- : ^[[1m^[[35mCategory Load (0.1ms)^[[0m SELECT categories.* FROM categories ORDER BY id asc
I, [2016-09-26T03:43:01.917288 #1353] INFO -- : Completed 200 OK in 7ms (Views: 6.1ms | ActiveRecord: 0.3ms)
I, [2016-09-26T03:43:03.684106 #1350] INFO -- : Started GET "/images/favicon.ico"for 190.75.118.58 at 2016-09-26 03:43:03 +0900

(Error Message) ------------------------------------

F, [2016-09-26T03:43:03.685328 #1350] FATAL -- :
ActionController::RoutingError (No route matches [GET] "/images/favicon.ico"):
actionpack (4.2.6) lib/action_dispatch/middleware/debug_exceptions.rb:21:in call' actionpack (4.2.6) lib/action_dispatch/middleware/show_exceptions.rb:30:incall'
railties (4.2.6) lib/rails/rack/logger.rb:38:in call_app' railties (4.2.6) lib/rails/rack/logger.rb:20:inblock in call'
activesupport (4.2.6) lib/active_support/tagged_logging.rb:68:in block in tagged' activesupport (4.2.6) lib/active_support/tagged_logging.rb:26:intagged'
activesupport (4.2.6) lib/active_support/tagged_logging.rb:68:in tagged' railties (4.2.6) lib/rails/rack/logger.rb:20:incall'
actionpack (4.2.6) lib/action_dispatch/middleware/request_id.rb:21:in call' rack (1.6.4) lib/rack/methodoverride.rb:22:incall'
rack (1.6.4) lib/rack/runtime.rb:18:in call' actionpack (4.2.6) lib/action_dispatch/middleware/request_id.rb:21:incall'
rack (1.6.4) lib/rack/methodoverride.rb:22:in call' rack (1.6.4) lib/rack/runtime.rb:18:incall'
activesupport (4.2.6) lib/active_support/cache/strategy/local_cache_middleware.rb:28:in call' actionpack (4.2.6) lib/action_dispatch/middleware/static.rb:120:incall'
rack (1.6.4) lib/rack/sendfile.rb:113:in call' railties (4.2.6) lib/rails/engine.rb:518:incall'
railties (4.2.6) lib/rails/application.rb:165:in call' unicorn (5.0.1) lib/unicorn/http_server.rb:562:inprocess_client'
unicorn (5.0.1) lib/unicorn/http_server.rb:658:in worker_loop' unicorn (5.0.1) lib/unicorn/http_server.rb:508:inspawn_missing_workers'
unicorn (5.0.1) lib/unicorn/http_server.rb:132:in start' unicorn (5.0.1) bin/unicorn_rails:209:in<top (required)>'
/home/ubuntu/.rbenv/versions/2.2.3/bin/unicorn_rails:23:in load' /home/ubuntu/.rbenv/versions/2.2.3/bin/unicorn_rails:23:in<top (required)>'
bundler (1.13.1) lib/bundler/cli/exec.rb:74:in load' bundler (1.13.1) lib/bundler/cli/exec.rb:74:inkernel_load'
bundler (1.13.1) lib/bundler/cli/exec.rb:27:in run' bundler (1.13.1) lib/bundler/cli.rb:332:inexec'
bundler (1.13.1) lib/bundler/vendor/thor/lib/thor/command.rb:27:in run' bundler (1.13.1) lib/bundler/vendor/thor/lib/thor/invocation.rb:126:ininvoke_command'
bundler (1.13.1) lib/bundler/vendor/thor/lib/thor.rb:359:in dispatch' bundler (1.13.1) lib/bundler/cli.rb:20:indispatch'
bundler (1.13.1) lib/bundler/vendor/thor/lib/thor/base.rb:440:in start' bundler (1.13.1) lib/bundler/cli.rb:11:instart'
bundler (1.13.1) exe/bundle:34:in block in <top (required)>' bundler (1.13.1) lib/bundler/friendly_errors.rb:100:inwith_friendly_errors'
bundler (1.13.1) exe/bundle:26:in <top (required)>' /home/ubuntu/.rbenv/versions/2.2.3/bin/bundle:23:inload'
/home/ubuntu/.rbenv/versions/2.2.3/bin/bundle:23:in `

'

Any help would be appreciate it, also, if you need something else, just let me know and I will delivered as soon as possible.
Thank you and hope to hear from you soon.

Permission settings

At this point, there are 3 types of users.

  • anonymous (NOT logged in)
  • user (logged in)
  • administrator (logged in with admin permission)

All Users can create/edit their own slides now. There's no way to restrict user to create/edit their slides.

The requirement is to enable user to add comments to slides and to prohibit user to uploading slides.

カテゴリ名の変更について

slideのカテゴリ名なのですが、下記テーブルに入っている認識です

  1. こちらを直接変更することで、カテゴリ名が変わる認識で大丈夫でしょうか?
  2. 変更して問題がありますでしょうか?(varchar255内で、全角や半角など)
  3. こちらを変更するインターフェースを作成する予定はございますでしょうか?

以上ご回答よろしくおねがいします

mysql> select * from  xxxxxx.categories;
+----+---------------+---------------------+---------------------+
| id | name          | created_at          | updated_at          |
+----+---------------+---------------------+---------------------+
|  1 | Books         | 2018-06-21 05:39:25 | 2018-06-21 05:39:25 |
|  2 | Business      | 2018-06-21 05:39:25 | 2018-06-21 05:39:25 |
|  3 | Design        | 2018-06-21 05:39:25 | 2018-06-21 05:39:25 |
|  4 | Education     | 2018-06-21 05:39:25 | 2018-06-21 05:39:25 |
|  5 | Entertainment | 2018-06-21 05:39:25 | 2018-06-21 05:39:25 |
|  6 | Finance       | 2018-06-21 05:39:25 | 2018-06-21 05:39:25 |
|  7 | Games         | 2018-06-21 05:39:25 | 2018-06-21 05:39:25 |
|  8 | Health        | 2018-06-21 05:39:25 | 2018-06-21 05:39:25 |
|  9 | How-to & DIY  | 2018-06-21 05:39:25 | 2018-06-21 05:39:25 |
| 10 | Humor         | 2018-06-21 05:39:25 | 2018-06-21 05:39:25 |
| 11 | Photos        | 2018-06-21 05:39:25 | 2018-06-21 05:39:25 |
| 12 | Programming   | 2018-06-21 05:39:25 | 2018-06-21 05:39:25 |
| 13 | Research      | 2018-06-21 05:39:25 | 2018-06-21 05:39:25 |
| 14 | Science       | 2018-06-21 05:39:25 | 2018-06-21 05:39:25 |
| 15 | Technology    | 2018-06-21 05:39:25 | 2018-06-21 05:39:25 |
| 16 | Travel        | 2018-06-21 05:39:25 | 2018-06-21 05:39:25 |
+----+---------------+---------------------+---------------------+
16 rows in set (0.02 sec)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.